JAVA8 Lambda表达式总结

λ表达式主要分成两种形式,一种是使用λ操作符“->”,另一种是使用“::”的方法引用,和函数式接口配合使用。

1.函数式接口

(1)函数式接口只包含一个抽象方法

(2)可以通过λ表达式来创建函数式接口的实现类。

(3)我们可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口。

2.λ操作符“->”

语法:(参数1,参数2...)  ->  {方法体};

当没有参数时,小括号里不写任何东西;只有一个参数时,可以省略小括号;方法体只有一条语句的时候可以省略大括号和return。

参数无需声明类型,编译器会进行类型推断。

 

3.“::”和方法引用

当要传给λ表达式的方法体已经有实现的时候,可以使用方法引用。

语法:className :: methodName 或者 object :: methodName,左边是类名或者对象,右边是方法名。

如果是构造方法,直接写成 className :: new,数组也可以,例如String[] :: new。

有两点需要注意:

(1)方法引用所引用的方法的参数列表与返回值类型,需要与函数式接口中抽象方法的参数列表和返回值类型保持一致!

 (2)若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,格式: ClassName::MethodName。例如:(x,y)-> x.equals(y);可以直接写成 String  :: equals;

你可能感兴趣的:(Java8,λ表达式)