equals(Object)和函数接口

时间:2018-08-22 12:23:44

标签: java

根据Java语言规范(版本8.0),“接口不继承自Object ,而是隐式声明许多与Object相同的方法。”如果您提供Object类的抽象方法在界面中,它仍然是一个功能性界面。

@FunctionalInterface
interface EqualsInterface {
    boolean equals(Object obj);
}

编译器给出错误:“ EqualsInterface不是功能接口:在接口EqualsInterface中找不到抽象方法”。为什么? 预先感谢

1 个答案:

答案 0 :(得分:5)

根据Java API

  

一种信息性注释类型,用于指示接口类型   声明旨在成为由   Java语言规范。从概念上讲,功能接口具有   正是一种抽象方法。由于默认方法具有   实施,它们不是抽象的。 如果接口声明了   覆盖公共方法之一的抽象方法   java.lang.Object,这也不会计入接口的   抽象方法的数量,因为该接口的任何实现都会   在java.lang.Object或其他地方实现