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