首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8 FunctionalInterface与接口

Java 8 FunctionalInterface与接口
EN

Stack Overflow用户
提问于 2021-02-15 06:33:01
回答 2查看 1.6K关注 0票数 0

大家好。FunctionInterfaceInterface之间有什么区别,为什么我们需要声明@FunctionalInterface,如果在包java.util.function的实现中有接口的话;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-15 07:40:17

FunctionalInterface是一个具有以下功能的接口:

  • 只有一个抽象方法。
  • 0或几个默认的方法(带正文)。

因此,编译器将能够找到对应于您将要传递的lambda的方法。

例如;

代码语言:javascript
复制
@FunctionalInterface
public interface Supplier<T> {
    T get();
    default String greet() {
        return "Hello, World ";
    }
    default String greet2() {
        return "Hello, World 2";
    }
}

因此,java将很容易地找到正确的(抽象)方法,因为is是惟一的

代码语言:javascript
复制
        Supplier<Car> fordCarProvider = () -> new Car("Ford", 1500, 4, 43000);
        Supplier<Car> bmwCarProvider = () -> new Car("BMW", 1500, 4, 83000);

        System.out.println(fordCarProvider.get());
        System.out.println(bmwCarProvider.get());

但是,如果您有几个抽象方法,那么它就不再是FunctionalInterface了。因为可能会出现歧义。

代码语言:javascript
复制
// No more @FunctionalInterface
public interface Supplier<T> {
    T get();
    String greet();
    default String greet2() {
        return "Hello, World 2";
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-02-15 06:56:08

Java中的@FunctionalInteface是只有一个方法的interface

https://www.baeldung.com/java-8-functional-interfaces

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66203627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档