java8 lambda表达式以及@FunctionInterface注解
lambda表达式
1、如果形参列表是空的,只需要保留()即可
2、如果没有返回值。只需要在{}写执行语句即可
3、如果接口的抽象方法只有一个形参,()可以省略,只需要参数的名称即可
4、如果执行语句只有一行,可以省略{},但是如果有返回值时,情况特殊。
5、如果函数式接口的方法有返回值,必须给定返回值,如果执行语句只有一句,还可以简写,即省去大括号和return以及最后的;号。(如果要省去return已经后面的分号,大括号是一定也要省去的)
6、形参列表的数据类型会自动推断,只需要参数名称。
注意:
(1)使用lambda表达式只能是对于接口,对于抽象类或者普通类都是不能用的.
(2)并且函数式接口中只能有1个抽象方法与n个静态方法,如果存在多个抽象方法,则不能作为函数式接口(lambda)使用了
@FunctionInterface
其实作用就是提示其他人或者编译器,该接口是函数式接口,该接口内只能有一个抽象方法(默认方法不限)。当某些不知道的人 在该接口中又添加了方法时,编译器会有警告。
所以,@FunctionInterface接口仅仅只是提示作用。
java8的方法引用另写了文章
其中有一部分内容引用自https://blog..net/zymx14/article/details/70175746
如果有错误,请留言帮我改正,感激不尽!!
