通常是这样的是的。这取决于您如何定义平等的概念。请注意,对于引用类型,您可以在实现自己的equals
(和hashCode
)时重用/委托给该对象的实现。
相关问题:
只有在有充分理由的情况下才应该覆盖 equals()
方法。如此处所述,对于非 final 或可变类编写正确的 equals()
方法非常困难。
如果您的应用程序需要一些不同于“相同对象”的等价概念,那么可以这样做。只需阅读上述参考文献以了解相关内容。但作为常规操作?绝对不是。
如果您用生活中的术语来理解,就更容易理解覆盖equals()的概念。
只有当两个对象在逻辑上需要相等时,才应该覆盖Equals方法。此外,如果您担心程序中某个对象可能会被重新创建,则必须覆盖equals()。
Java中一个很好的例子是字符串对象。
String string1= new String("hello");
String string2= "hello";