Loading

java 函数式接口

函数式接口

参考文章

https://www.cnblogs.com/chenpi/p/5890144.html

什么是函数式接口(Functional Interface)

所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。注意是只能有一个、而且是抽象方法。

关于@FunctionalInterface注解

Java 8为函数式接口引入了一个新注解 @FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。

下载

提醒:加不加@FunctionalInterface对于接口是不是函数式接口没有影响,该注解知识提醒编译器去检查该接口是否仅包含一个抽象方法

函数式接口里允许定义默认方法

函数式接口里是可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义的;

@FunctionalInterface
interface GreetingService
{
    void sayMessage(String message);

    default void doSomeMoreWork1()
    {
        // Method body
    }

    default void doSomeMoreWork2()
    {
        // Method body
    }
}

函数式接口里允许定义静态方法

函数式接口里是可以包含静态方法,因为静态方法不能是抽象方法,是一个已经实现了的方法,所以是符合函数式接口的定义的;

@FunctionalInterface
interface GreetingService 
{
    void sayMessage(String message);
    static void printHello(){
        System.out.println("Hello");
    }
}

函数式接口里允许定义java.lang.Object里的public方法

函数式接口里是可以包含Object里的public方法,这些方法对于函数式接口来说,不被当成是抽象方法(虽然它们是抽象方法);因为任何一个函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现;

@FunctionalInterface
interface GreetingService  
{
    void sayMessage(String message);

    @Override
    boolean equals(Object obj);
}
posted @ 2022-05-03 21:36  槐下  阅读(37)  评论(0编辑  收藏  举报