在功能界面中找不到目标方法

时间:2017-05-23 21:44:29

标签: java functional-interface

我想了解有关Java 8 FunctionalInterface注释的更多信息。我将以下代码编写为实验,但不编译:

@FunctionalInterface
public interface HasToString {

    String toString();
}
  

找不到目标方法

有趣的是,这个 编译:

@FunctionalInterface
public interface HasToString {

    String notToString();
}

为什么会这样?

1 个答案:

答案 0 :(得分:5)

这在JLS 9.8

中说明
  

功能接口是一个只有一个抽象方法(除了Object的方法)的接口,因此代表一个单一的函数契约。这个"单身"方法可以采用多个抽象方法的形式,从超级接口继承的覆盖等效签名;在这种情况下,继承的方法在逻辑上代表一个方法。

由于toString是类Object "的" 公共实例方法,因此您的界面不具备成为功能界面的条件。