在Lambda表达式中已经明确要求Lambda是应用在接口上的一种操作,并且接口中只允许定义有一个抽象方法。但是在一个项目开发中往往会定义大量的接口,而为了分辨出Lambda表达式的使用接口,可以在接口上使用“@FunctionalInterface”注解声明,这样表示此为函数式接口,里面只允许定义一个抽象方法。
使用@FunctionalInterface注解的例子:
package com.mydemo;
public class LambdaDemo {
public static void main(String[] args) {
// IMath iMath = (t1, t2) -> {
// return t1 + t2;
// };
IMath iMath = (t1, t2) -> t1 + t2;
System.out.println(iMath.add(5,7));
}
}
// 定义接口
@FunctionalInterface // 该接口只允许定义一个抽象方法
interface IMath{ // 定义接口
public int add(int x, int y); // 抽象方法
/**
* 理论上来说,如果一个接口只有一个抽象方法,
* 写与不写@FunctionalInterface注解是没有区别的;
* 但是从标准来讲,还是建议读者写上此注解。
* 同时需要注意的是,在函数式接口中依然可以定义普通方法和静态方法
*/
}
运行结果:
12