今天复习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表达式。就这样吧,结束。