为什么我会得到“Illegal generic type for instanceof”错误?
- 论坛
- 为什么我会得到“Illegal generic type for instanceof”错误?
13 浏览
为什么我会得到“Illegal generic type for instanceof”错误?
给定:
public class C{ private class D { public boolean equals( Object o ) { if ( !(o instanceof D) ) // 第4行 return false; D other = (D)o; // 第6行 return i == other.i; } int i; } }
我得到的错误信息如下:
C.java:4: instanceof操作符不能使用泛型类型 if ( !(o instanceof D) ) ^
同时,我还得到了关于第6行的“未经检查的转换”警告。为什么会出现这个警告?因为o
不是泛型类型--它只是一个普通的Object
。如何才能正确地实现equals()
,既能检查并转换为D
的实例?
注意:显然,这段代码示例是我实际代码的简化版本。实际的C
和D
类要大得多,D
是C
的一个使用的private
内部类。
另外:实际的D
确实使用了泛型参数T
。