一 前言
最近面试的时候,开始整理自己学过的知识,发现了自己写的思维导图,就想着把导图中写的东西,写到博客里,学lambda表达式的原因是因为···想学习java8的新特性,嗯,就是这样!!!(不会告诉你们是我看不懂,想让别的萌新也看不懂才学的)
二定义
a function (or a subroutine) defined, and possibly called, without being bound to an identifier---一个不用被绑定到一个标识符上,并且可能被调用的函数(大概是这个意思)
三 lambda语法
1 参数可以是零到多个;
2 参数类型可以指定,可省略(它是可以根据表达式上下文推断出来的~~);
3 参数包含在原括号中,用逗号分隔;
4 表达式主体可以零条或多条语句,包含在花括号中;
5 表达式主体只有一句语句时,表达式的返回类型与代码块的返回类型一致;
6 表达式主体有一条以上语句时,表达式的返回类型与代码块的返回类型一致;
7 表达式只有一条语句时,表达式的返回类型与该语句的返回类型一致;
四 简化版
1 编译器通过上下文推断;
2 当lambda表达式的参数个数只有一个,可以省略小括号;
3 当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号;
4 使用Method Reference;
五 方法引用
构造器引用 :: ClassName::new
方法引用::static方法的引用 ContainingClass::staticMethodName
特定对象的方法的引用 containingObject::instanceMethodName
特定类型的方法的引用 ContainingType::methodName
六 总结
现在尽量能使用就使用lambda语句,代码看起来更简洁和易读(在不会的前提下,lambda表达式和方法引用一起使用,简直丧心病狂!!!);