下面贴一段简单的函数式接口代码:
/**
* @author 雷钊
* @Date on 2017/12/24
* @Description
*/
@FunctionalInterface
public interface DefultInterface {
/**
* 加1
*
* @param num
*/
public default int addOne(int num) {
num -= 1;
return num;
}
/**
* 减一
*
* @param num
*/
public int removeOne(int num);
}
@FunctionalInterface
没错 函数式接口 就是这么简单 , 就多了一个注解
作用:
如果interface加上了这个注解,那么这个接口,将 只能有一个”抽象”方法 ,否则编译将报错.
注意: defult 方法不算,可以有多个,不受限制
运用时机:
在下理解, @FunctionalInterface 这个注解,是为了 lambda 表达式打造的,因为 lambda 表达式,系统会自动去匹配方法,但是安全性没法儿保证了,为了解决这个问题.可以通过这个注解, 强制 达到只有一个实现方法的目的.