0
点赞
收藏
分享

微信扫一扫

函数式接口@FunctionInterface

有以下特点:

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);
    }
}

举报

相关推荐

0 条评论