我想了解有关Java 8 FunctionalInterface
注释的更多信息。我将以下代码编写为实验,但不编译:
@FunctionalInterface
public interface HasToString {
String toString();
}
找不到目标方法
有趣的是,这个 编译:
@FunctionalInterface
public interface HasToString {
String notToString();
}
为什么会这样?
答案 0 :(得分:5)
这在JLS 9.8
中说明功能接口是一个只有一个抽象方法(除了Object的方法)的接口,因此代表一个单一的函数契约。这个"单身"方法可以采用多个抽象方法的形式,从超级接口继承的覆盖等效签名;在这种情况下,继承的方法在逻辑上代表一个方法。
由于toString
是类Object "的" 公共实例方法,因此您的界面不具备成为功能界面的条件。