Я видел коллегу написать это следующим образом:Как переписать метод Equals
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ImageCode other = (ImageCode) obj;
if ((this.code == null) ? (other.code != null) : !this.code.equals(other.code)) {
return false;
}
return true;
}
Тогда я предложил изменить его для этого:
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Parent)){
return false;
}
final ImageCode other = (ImageCode) obj;
if ((this.code == null) ? (other.code != null) : !this.code.equals(other.code)) {
return false;
}
return true;
}
, но он сказал мне, что это неправильно, и что instanceof
не может использоваться для метода equals
. Я не понимаю, почему он это сказал.
Не могу сказать. Вы пытались запустить ваш equals override с некоторыми линиями отладки? – Hooch
Класс C расширяет B. И B расширяет A. Тогда объект c является экземпляром C (или B или A). Не означает, что c и b (или a) являются одним и тем же классом. – waltersu
@ Hooch, @ waltersu, но я тестировал расширение, я не мог найти ошибки. – lucare