有以下特点:
1.该注解只能标记在“有且仅有一个抽象方法”的接口上。
2.JDK8接口中的静态方法和默认方法,都不算事抽象方法。
3.接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,那么也不算抽象方法。
4.该注解不是必须的,如果一个接口符合“函数式接口”定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错。
@FunctionalInterface
public interface FunctionalInterfaceTest {
Object doSomething(Object object);
}
作用:使用@FunctionInterfave可以防止以后再接口中添加新的抽象方法,就是限定了只能用此抽象方法,别的方法不能用,直接限制死了。
public class Test {
@org.junit.Test
public void test(){
test2(list -> {
// 执行test的doSomething
System.out.println(list);
return "doSomething方法执行完成";
});
}
public void test2(FunctionalInterfaceTest test){
System.out.println("方法test2被调用");
final Object o = test.doSomething("执行test的doSomething");
System.out.println("打印doSomething的返回值:" + o);
}
}
标签:函数,doSomething,Object,接口,test,FunctionInterface,方法,public
From: https://blog.51cto.com/u_11315052/9028277