我知道 equals()、hashCode() 和 toString() 是大多数类应该为该类重写的三个方法及其具体用法,但是我是否应该添加其他方法到我的类中,如果是的话为什么我要添加使用它们以及它们如何工作?
从
类继承的哪些方法应该通常被重写?Object
都没有!其中一些“可以”被覆盖,而且经常被覆盖。但它们中的任何一个都不应该理所当然地被覆盖。 以下是可以重写的方法:
toString()
如果您希望它反映目标实例的状态,则可以覆盖
。 如果您希望equals(Object)
hashCode()
和
equals
可能会被覆盖1。
clone()
如果默认实现的语义不是您所需要的,
可能会被覆盖。如果您希望该类可完成,则
finalize()
may
会被覆盖。 (但不要这样做。终结已被弃用,并将在未来的 Java 版本中删除。有关详细信息,请参阅JEP 421。) 其余的
Object
final
,因此它们不能被覆盖。1 - 如果您重写这两种方法之一,您很可能需要重写另一个方法来维护通用的
hashCode
合约。有关详细信息,请参阅 javadocs
。