Java 8默认方法接口覆盖Object equals方法

Win*_*ins 13 java java-8 default-method

public interface Table<T> {

    @Overrride
    default boolean equals(Object other) {
        //do something and return true/false
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码有编译错误"java:默认方法在接口表中等于覆盖java.lang.Object的成员"?我们不能使用接口默认方法覆盖hashCode和equals方法,大概我在同一个接口中有方法来确定实现这个接口的对象是否相等?

Ste*_*ker 12

具有实现的类总是胜过默认方法,因此具有默认值hashCodeequals永远不会被调用,因此被禁止.

  • 不仅*implementation*胜过默认方法.*在非`interface`类(即超类层次结构中)中生成的任何声明*都会获胜,即使它被声明为`abstract`. (5认同)