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

sdg*_*sdh 2 java functional-interface

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

@FunctionalInterface
public interface HasToString {

    String toString();
}
Run Code Online (Sandbox Code Playgroud)

找不到目标方法

有趣的是,这确实编译:

@FunctionalInterface
public interface HasToString {

    String notToString();
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

Ima*_*kin 5

这在JLS 9.8中说明

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

作为toString" 类Object " 的" 公共实例方法 ",您的接口不符合功能接口的条件.