Предположим, что существуют два класса:
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 */
}
Затем я сгенерирую методы equals()
и hashCode()
в классе B
с помощью Eclipse "Source → Generate hashCode() и equals()...". Но Eclipse предупреждает меня, что:
Суперкласс 'com.example.test2.A' не переопределяет equals() и hashCode() - полученный код может работать некорректно.
Итак, , что приведет к тому, что полученный код не будет корректно работать с сгенерированными методами?
(BTW, сгенерированные методы выглядят так:
@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;
}
)