为什么我会得到“Illegal generic type for instanceof”错误?

13 浏览
0 Comments

为什么我会得到“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的实例?

注意:显然,这段代码示例是我实际代码的简化版本。实际的CD类要大得多,DC的一个使用的private内部类。

另外:实际的D确实使用了泛型参数T

0