根据Java语言规范(版本8.0),“接口不继承自Object ,而是隐式声明许多与Object相同的方法。”如果您提供Object类的抽象方法在界面中,它仍然是一个功能性界面。
@FunctionalInterface
interface EqualsInterface {
boolean equals(Object obj);
}
编译器给出错误:“ EqualsInterface不是功能接口:在接口EqualsInterface中找不到抽象方法”。为什么? 预先感谢
答案 0 :(得分:5)
根据Java API,
一种信息性注释类型,用于指示接口类型 声明旨在成为由 Java语言规范。从概念上讲,功能接口具有 正是一种抽象方法。由于默认方法具有 实施,它们不是抽象的。 如果接口声明了 覆盖公共方法之一的抽象方法
java.lang.Object
,这也不会计入接口的 抽象方法的数量,因为该接口的任何实现都会 在java.lang.Object
或其他地方实现。