我们知道,如果我们重写equals
,就必须重写hashCode
。如果我只覆盖equals
,它仍然可以编译。这更好吗?或者为什么编译器不发出警告或类似的警告?
最佳答案
编译器通常不会强制执行语义约束。
在这种特殊情况下,编译器将无法提供可靠警告 - 如果您知道基类hashCode
适用于派生类怎么办?或者如果您真的只需要等于
?
关于java - 为什么我可以编译出错误的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749700/