Java:如果我覆盖.equals方法,我还可以用==测试引用相等吗?

sho*_*red 2 java overloading equals

我有以下情况:我需要根据高度对树进行排序,因此我使用height属性使树具有可比性.但是,我还被告知要覆盖equals和hashCode方法以避免不可预测的行为.

尽管如此,有时我可能想要使用==来比较这些行的根或某些东西的引用.这还有可能还是==比较调用equals方法?

Fed*_*oca 8

equals()用于将对象与程序员设置的规则进行比较.在您的示例中,您将按树高度比较树木,因此您将编写equals()它以比较高度.

==,正如你所说,比较参考.这些都不是既equals()没有被触及也没有被触及hashCode().所以你不会改变它的行为.