今天复习Lambda表达式,因为这个是java8的新特性,所以JDK和IDE弄了好久,现在才刚弄好。
Lambda表达式是java8的新特性,支持将代码块作为方法参数,Lambda表达式允许使用更简洁的方式来创建只有一个抽象方法的接口(函数式接口)的实例,其中,被大家都知道的就是使用Lambda表达式创建Thread实例。这种方式大大简洁化了大家的代码。
Lambda表达式由三部分组成,形参列表,箭头"->",代码块。其中,形参列表允许省略形参类型,如果只有一个新参,甚至形参列表的圆括号也可以省略。箭头必须使用英文的画线和大于号。代码块就是处理行为,才某些特殊情况下,可以省略花括号和return关键字。
下面就一个简单例子来具体说一下,代码如下:
package LambdaTrain; public class demo1 { /* * 测试使用的代码,分别要传入各自的参数 */ public void eat(Eatable e) { System.out.println(e); e.taste(); } public void drive(Flyable f) { System.out.println("我正在驾驶:"+f); f.fly("【碧空如洗的日子】"); } public void test(Addable add) { System.out.println("5与3的和为:"+add.add(5, 3)); } /* * 主方法,其中的方法参数都是使用lambda表达式 */ public static void main(String[] args) { demo1 demo1=new demo1(); //lambda表达式的代码只只有一句,可以省略“{}” //这里的lambda表达式实际上被当成任意的类型,具体的类型取决于运行环境的需要 demo1.eat(()->System.out.println("苹果的味道不错")); //方法的形参只有一个,可以省略“()” weather是接口方法的形参 demo1.drive(weather->{ System.out.println("今天的天气是:"+weather); System.out.println("直升机飞行平稳"); }); //代码只有一句,可以省略“{}”,同时也可以省略return关键字 a+b是返回值 demo1.test((a,b)->a+b); } } /* * 测试使用的接口,只有一个抽象方法的接口(函数式接口) */ interface Eatable { void taste(); } interface Flyable { void fly(String weather); } interface Addable { int add(int a,int b); }
上面就是例子的代码,有一些不懂的地方都写了注释了。Lambda表达式其实只是一个工具,具体的学习还是要和其他的学习放在一起,比如线程的学习中会用到Lambda表达式。就这样吧,结束。