我看着one of your previous questions,它似乎color
字段是Color
。我會假設你沒有改變那個領域的類型。
這是一個類,因此是一個引用類型,這意味着您需要使用equals()
或類似的方法來比較顏色(我之前沒有使用過這個類,所以我不能準確地告訴你哪種方法使用)。
if (/* ... && */ this.color.equals(other.color)) {
正如評論,使用==
比較引用類型確實比較Java中的內存地址。如果它們都指向內存中的同一對象,它將僅返回true
。
編輯:akf points out,你需要使用基Object
類的參數,否則你不重寫Object.equals()
,但實際上超載,即提供調用同名方法的不同方式。如果偶然碰巧傳遞了完全不同類的對象,可能會發生意外的行爲(不過,如果它們屬於不同的類,它將會正確返回false
)。
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Ghost))
return false;
// Cast Object to Ghost so the comparison below will work
Ghost other = (Ghost) obj;
return this.x == other.x
&& this.y == other.y
&& this.direction == other.direction
&& this.color.equals(other.color);
}
@fprime:你只需要一個return語句,而不需要'if'。 ;-) – 2010-10-16 19:33:29
打印出個人的結果,如果短語(例如'this.x == other。在if語句之前。看哪一個失敗。 – 2010-10-16 19:34:58
被比較的任何變量對象類型,而不是原始類型? – 2010-10-16 19:35:03