public class C<T> {
private class D {
public boolean equals(Object o) {
if (!(o instanceof D)) // line 4
return false;
D other = (D)o; // line 6
return i == other.i;
}
int i;
}
}
我得到:
C.java:4: illegal generic type for instanceof
if (!(o instanceof D))
^
我也得到一個 「未投」 警告約6行麼? o
是而不是通用類型 - 它只是一個普通的Object
。如何通過檢查和鑄造D
的實例來正確執行equals()
?
注:顯然,這個代碼示例是我的實際代碼的削減版本。 C
和D
的真實類別要大得多,而D
是C
的private
內部類別。
供參考:真正的D
確實使用通用參數T
。
你試過*的instanceof C.D *而不是*的instanceof d *? – 2010-10-23 00:59:28
我只是要指出,給出*的例子*被打破。 – 2010-10-23 01:00:09
@Evan:行之有效。但爲什麼資格是必要的? – 2010-10-23 01:09:02