假设有两个这样的类:
abstract class A { /* some irrelevant methods */ }
class B extends A {
public final int x;
public B(final int x) {
this.x = x;
}
/* some more irrelevant methods */
}
然后我使用 Eclipse 的“Source → Generate hashCode() and equals()...”在类上生成equals()
and方法。但 Eclipse 警告我:hashCode()
B
超类 'com.example.test2.A' 不会重新声明 equals() 和 hashCode() - 结果代码可能无法正常工作。
那么,什么会使生成的代码无法与生成的方法一起正常工作呢?
(顺便说一句,生成的方法如下所示:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
B other = (B) obj;
if (x != other.x)
return false;
return true;
}
)