Java 8 默认方法接口(interface)覆盖对象等于方法

标签 java java-8 default-method

<分区>

public interface Table<T> {

    @Overrride
    default boolean equals(Object other) {
        //do something and return true/false
    }
}

为什么上面的代码会出现“java: default method equals in interface Table overrides a member of java.lang.Object”的编译错误?我们不能使用接口(interface)默认方法覆盖 hashCode 和 equals 方法吗,大概我在同一接口(interface)中有方法来确定实现此接口(interface)的对象是否相等?

最佳答案

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

关于Java 8 默认方法接口(interface)覆盖对象等于方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28019242/

相关文章:

java - 调整 JDialog 和 JTable 列的大小时出现问题

java - 为什么 JCF 接口(interface)中的许多方法在 Java 8 中没有成为默认值?

java - 在 JSP EL 中使用接口(interface)默认方法时出现 "Property not found on type"

java - 代码在 JavaSE 中有效,但在 Wildfly 中因 NullPointerException 而崩溃

java - 使用java生成UUID主键安全吗?

java - 模式 MM/yy 的 DateTimeFormatter

java - 在 Java8 中引入 lambda 会改变或影响哪种 GoF 设计模式?

java - 在 Java 中使用 lambda 表达式有什么运行时好处吗?

java - 如果两个接口(interface)包含相同的默认方法会怎样?

java - 如何调整窗口大小以使所有组件可见