lambda表达式
Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数
Lambda表达式函数的话,只有参数列表和方法体;
(参数列表) -> {方法体}
说明:
():用来描述参数列表;
{}:用来描述方法体
->:lambda运算符,可以叫做箭头符号,或者goes to
lambda表达式例子:
public class LambdaDemo { public static void main(String[] args) { // Cal cal = new Cal() { // @Override // public int add(int a, int b) { // return a + b; // } // }; Cal cal = (int a, int b) -> { return a + b; }; System.out.println(cal.add(1,2)); } } public interface Cal { int add(int a, int b); }
上面例子中的lambda表达式等同于被注释的部分
Lambda注解:@FunctionalInterface注解
特点:
接有且仅有一个抽象方法
允许定义静态方法
允许定义默认方法
允许java.lang.Object中的public方法
该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@Functionlnterface,那么编译器会报错