Мое назначение - переопределить метод equals(). У меня есть несколько проблем с использованием Stack12<E> that = (Stack12<E>)o;
и o instanceof Stack12
. Я удивляюсь, что они плохие практики, особенно, как я использую that
в for-loop чувствует себя немного не так, как надо.Java сравнивает этот класс с этим классом для равенства
Есть ли другой способ сравнить этот класс с каким-либо другим объектом? Или мой метод сравнения достаточно прочен?
public boolean equals(java.lang.Object o){
if(o == this) return true;
if(o == null || !(o instanceof Stack12)){
return false;
}
Stack12<E> that = (Stack12<E>)o;
if(this.size != that.size || this.capacity != that.capacity){
return false;
}
for(int i = 0; i < this.size; i++){
if(that.stack[i] != this.stack[i]){
return false;
}
}
return true;
}
Я чувствую себя некомфортно, бросая объект в общий тип. И я думаю, что я где-то читал, используя instanceof, это плохая практика на Java. – Sugihara
Единственное предостережение, которое я добавил бы, заключается в том, что всякий раз, когда вы переопределяете 'equals (...)', вы также захотите переопределить 'hashCode()'. Ой, я действительно вижу одну важную проблему - ответ отправлен. –