一、简述
Java为了扩充匿名方法在1.8中新追加的特性.本身Java之前的版本是没有匿名方法的,只有匿名对象.
二、使用
Java中使用匿名方法必须要对应接口中的一个抽象方法.(要有一个匿名方法,需要函数去接收它)
三、为什么使用 Lambda 表达式
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
四、实例一:从匿名类到 Lambda 的转换
git仓库:点击这里
五、Lambda 表达式语法
Lambda 表达式在Java 语言中引入了一个新的语法元 素和操作符。这个操作符为 “->” , 该操作符被称 为 Lambda 操作符或剪头操作符。它将 Lambda 分为 两个部分:
左侧:指定了 Lambda 表达式需要的所有参数
右侧:指定了 Lambda 体,即 Lambda 表达式要执行 的功能。
语法格式一:无参,无返回值,Lambda 体只需一条语句
Runnable runnable2 = ()->{ System.out.println("runnable 002 ******"); };
语法格式二:Lambda 需要一个参数
Runnable runnable2 = (name)->{ System.out.println("runnable 002 ******"+name); };
语法格式三:Lambda 只需要一个参数时,参数的小括号可以省略
Runnable runnable2 = name ->{ System.out.println("runnable 002 ******"+name); };
语法格式四:Lambda 需要两个参数,并且有返回值
LambdaDemo lambdaDemo1 = (x, y) -> { return x+y };
语法格式五:当Lambda 体只有一条语句时,return 与大括号可以省略
LambdaDemo lambdaDemo1 = (int x,int y) -> { return x+y };
注意:
上述 Lambda 表达式中的参数类型都是由编译器推断 得出的。Lambda 表达式中无需指定类型,程序依然可 以编译,这是因为 javac 根据程序的上下文,在后台 推断出了参数的类型。Lambda 表达式的类型依赖于上 下文环境,是由编译器推断出来的。这就是所谓的 “类型推断”
案例2:
git地址: 点击这里