我的任務是重寫方法equals()。我有幾個使用Stack12<E> that = (Stack12<E>)o;
和o instanceof Stack12
的問題。我很奇怪他們是不好的練習,特別是我在for循環中使用that
對我來說有點不合適。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 2013-05-10 03:08:18
我唯一需要注意的是,只要你重寫'equals(...)',你也會想重載'hashCode()'。哎呀,我確實看到一個主要問題 - 答案已發佈。 – 2013-05-10 03:08:25