Lamda:属于函数式编程的概念;

interface IMessage {
public void print() ;
}
public class TestDemo {
public static void main(String [] args) {
fun(new IMessage() {
public void print() {
System.out.println("Hello,World!") ;
}
}) ;
}
public static void fun(IMessage msg) {
msg.print() ;
}
}

   上例代码为 匿名内部类 的运用;然而实际上在整个代码中,最终需要的只有一个输出操作,但由于Java的开发结构要求,不得不在核心的输出语句上嵌套更多内容;为了简化类似上例代码,JDK1.8引用了 函数式的编程 可以使用Lamda表达式。

interface IMessage {
public void print() ;
}
public class TestDemo {
public static void main(String [] args) {
fun( ()->System.out.println("Hello,World!") ) ; // Lamda表达式
//
}
public static void fun(IMessage msg) {
msg.print() ;
}
}

在整个代码的操作中,匿名内部类只进行一行语句的输出,所以此时使用了Lamda表达式实现需求。

对于Lamda语法主要有三种形式:

  1 — (参数) -> 单行语句

  2 — (参数) -> {多行语句}

  3 — (参数) -> 表达式

观察代码:

interface IMessage {
public void print( String str ) ;
}
public class TestDemo {
public static void main(String [] args) {
// 首先要定义此处表达式需要接收的变量
fun( (s)->System.out.println(s) ) ; // Lamda 有参语法
//
}
public static void fun(IMessage msg) {
msg.print("Hello World!") ; //设置参数的内容
}
}
interface IMessage {
public void print( String str ) ;
}
public class TestDemo {
public static void main(String [] args) {
// 定义Lamda有参多行语法
fun( (s)->{
s = s.toUpperCase() ;
System.out.println(s) ;
} ) ;
}
public static void fun(IMessage msg) {
msg.print("Hello World!") ; //设置参数的内容
}
}
interface IMessage {
public void add( int x , int y ) ;
}
public class TestDemo {
public static void main(String [] args) {
// 定义Lamda有参表达式语法
fun( (s1,s2) -> { return s1+s2 ;} ) ;
}
public static void fun(IMessage msg) {
System.out.println(msg.add(10,20)) ;
}
}

————————————

总结:

  利用Lamda表达式最终解决的问题是:避免了匿名内部类内定义过多无用的操作。

~~~~~

Java --Lamda表达式的更多相关文章

  1. java中lamda表达式的应用

    lamda表达式主要是为了解决匿名内部类的繁琐过程 范例:简单的lamda表达式 此处使用匿名内部类 package com.java.demo; interface IMessage{ public ...

  2. java的lamda表达式

    Java8才支持lamda表达式  lamda是一中函数式编程语言 通过实现模式是匿名内部类 java使用内部类实现接口 首先定义一个接口 @FunctionalInterfaceinterface ...

  3. Java使用lamda表达式简化代码

    代码,自然写的越简洁越好啦,写的人舒服,看的人也舒服,一切为了高效. 要把有限的时间花到其它有意思的事情上去. 目的 学习简化代码的思路,使用jdk8新特性lamada表达式. 使用 某接口,只有一个 ...

  4. 第六章 接口,lamda表达式与内部类

    接口 接口可以包含常量, 且不需要publish static final修饰, 接口的域会自动添加该修饰符. Java建议不要写多余的代码,因此省略修饰符更简洁. 全部都是常量的接口背离了接口的初衷 ...

  5. jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...

  6. JAVA8新特性——Lamda表达式

    JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ Lamda表达式,读作λ表达式,它实质属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类. 先来看看传统的匿名 ...

  7. java8-详解Lamda表达式

    一回顾与说明     通过之前发布的"Java8Lamda和Stream原理引入"一文章中你已经了解了为什么会有Lamda表达式的由来,Lamda表达式的基本语法等:Lamda表达 ...

  8. 29 匿名内部类、函数型接口、lamda表达式的引入

    匿名内部类 参考:https://www.runoob.com/w3cnote/java-inner-class-intro.html 进入后搜索匿名内部类. 函数型接口 函数式接口(Function ...

  9. Lamda表达式学习笔记一

    Lamda表达式学习笔记一 一.Lamda语法诠释 三傻大闹宝莱坞的主人公兰彻说的一句话让我映像深刻:用简单的语言来表达同样的意 我并不是说书上的定义怎么怎么不对,而是应该理解书本上的定义,并用简单的 ...

随机推荐

  1. .net core 拦截器的使用

    .net core 拦截器的使用 实例代码:https://gitee.com/D_C_L/InterceptorTest.git 拦截器主要是将程序中的一些可以独立出去的模块进行拦截,比如幕等性,和 ...

  2. 常用类-excel转csv

    public class ExcelFileHelper { public static bool SaveAsCsv(string excelFilePath, string destination ...

  3. Java学习 1.3——Java开发环境的搭建:安装JDK,配置环境变量

    了解了基本的Java知识后,就需要开始搭建开发环境了. 一,安装JDK JDK1.8下载地址 接受协议,选择选择自己的系统,我的是Windows64位: 点进去后会让你登录Oracle账号,没有就创建 ...

  4. Inherit from the Business Class Library Class 继承自Business类(EF)

    In this lesson, you will learn how to implement business classes for your application using the Busi ...

  5. Ajax跨域请求,设置content

    在使用Ajax跨域请求时,如果设置Header的ContentType为application/json,会分两次发送请求.第 一次先发送Method为OPTIONS的请求到服务器,这个请求会询问服务 ...

  6. js 报错 Uncaught TypeError: Cannot read property 'trim' of undefined

    jquery Uncaught TypeError: Cannot read property 'trim' of undefined 报错原因及解决方案 $.trim() 函数用于去除字符串两端的空 ...

  7. 微信小程序 wxml 文件中如何让多余文本省略号显示?

    废话不多说,之前写小程序碰到了一个问题,如何在 wxml 页面中截取数据? 1.wxs   取数据想必大家都会,不就是 substring 吗?但是这种方法在 wxml 页面中是无效的. 那还有 cs ...

  8. Android 列表对话框 使用数组

    添加一个数组 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt ...

  9. Scrapy_redis

    简介 scrapy_redis是一个基于Redis的Scrapy组件,用于scrapy项目的分布式部署和开发 你可以启动多个spider对象,互相之间共享有一个redis的request队列,最适合多 ...

  10. 201871010101-陈来弟《面向对象程序设计(java)》第一周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...