lambda表达式有什么用?
lambda表达式主要用于函数式编程,简化java开发,由java 8引入
lamdba是什么?
Lambda表达式的语法形式如下:
parameter -> expression body
主要组成:参数列表 + 箭头 + 表达式体,如 (int x, int y) -> x + y
其中,表达式体可以是一条表达式,也可以是一个语句块(多条代码语句);
Lambda表达式具有如下特征:
- 【可选】类型声明:参数的类型不需要声明,编译器可以根据参数值推断出其类型;
- 【可选】括号:单个参数的话,不需要用圆括号包围参数,当然,对于多个参数或无参数的话,括号是需要的;
- 【可选】花括号:如果表达式主体只有一条语句的话,不需要用花括号包围,当然,对于多条语句,花括号是需要的;
- 【可选】return关键字:如果表达式主体是单一表达式,return关键字可以不写,编译器可以自动返回该值,当然,如果写了return,则需要加上花括号;
什么是函数式接口?
函数式接口就是只包含单一的自定义抽象函数的接口。也就是说函数式接口可以包含静态方法、默认方法以及Object的public方法(java interface 继承 Object)
例如:
public interface MathOperation { int operation(int a, int b); }
@FunctionalInterface 注解是java 8引入的,用来做函数式接口的编译检查,如果被注解的接口不符合函数式接口的定义,编译会报错。
参考博客:
https://www.cnblogs.com/chenpi/p/5885062.html
https://www.cnblogs.com/chenpi/p/5890144.html
http://zh.lucida.me/blog/java-8-lambdas-insideout-language-features/