lambda表达式支持将代码块作为方法参数,适用于创建只有一个抽象方法的接口实例,这种接口(只包含一个抽象方法的接口)也成为函数式接口。
同时lambda表达式可以简化创建匿名内部类对象。Java8中为函数是接口提供了@FunctionalInterface注解。
lambda表达式的语法:
(形参列表)->{代码块}
形参列表:允许省略形参类型,如果只有一个参数,圆括号可省略,当为空时直接写()
箭头->:英文中划线和大于号
代码块:在代码块和普通代码块语法规则一样,如果只有一条代码,则可省略{},如果有返回值,且代码块只有一条return语句,则return也可省略。
lambda表达式有两个限制:
1.lambda表达式目标类型必须是明确的函数式接口。
2.lambda表达式只能为函数式接口创建对象。
例如创建一个Runnable接口的实例:
1 Runnable run = ()->{ 2 for(int i = 0;i < 10;i++){ 3 System.out.println(i); 4 } 5 };
上面的lambda表达式等价于:
Runnable run = new Runnable(){ @Override public void run(){ for(int i = 0;i < 10;i++){ System.out.println(i); } } };
转载于:https://www.cnblogs.com/Lily-Siwaer/p/6772690.html