假设有两个类如下:
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()" 在类B
上生成了equals()
和hashCode()
方法。但是Eclipse警告我:
超类'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;
}
equals
方法,而在你的例子中它显然没有。我甚至不是提问者,但我在这里感到沮丧! - Duncan Jones