java - 在内部类类型上使用 instanceof 时出现 "illegal generic type of instanceof"?

标签 java inner-classes instanceof

我在 NetBeans 中编码如下:

public class Grafo<V, E>
{
    class Par
    {
        int a, b;
        Par(int a, int b) {
            this.a = a;
            this.b = b;
        }

        @Override
        public boolean equals(Object ob)
        {
            if(ob instanceof Par) {
                Par p = (Par)ob;
                return this.a==p.a && this.b==p.b;
            }

            return false;
        }
    }

    //stuff...
} //end of class Grafo

错误出在内部类“Par”的 equals() 方法中。

NetBeans 说错误是“instanceof 的非法通用类型”。错误在下面的行中。

            if(ob instanceof Par) {

错误的原因是什么?

最佳答案

尝试 ob instanceof Grafo<?,?>.Par

我认为编译器认为 ob instanceof Par涉及对泛型类型参数的运行时检查;即它相当于 ob instanceof Grafo<V,E>.Par .但是instanceof测试无法检查泛型类型参数。

关于java - 在内部类类型上使用 instanceof 时出现 "illegal generic type of instanceof"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895682/

相关文章:

java - 为什么嵌套的子类可以访问其父类的私有(private)成员,而孙子却不能?

java - 使用 FlexJSON 序列化静态内部类

java - 当派生类主要用于扩展状态而不是行为时,如何动态获取继承层次结构中的子类?

javascript - JavaScript 中的 instanceof Array 比 isArray 好吗?

java - UrlRewriteFilter 规则不起作用

java - 如何将此 for 循环转换为 java 8 流模拟

java - 如何确定以下算法的时间复杂度(大 O 表示法)?

java - 如何在四个方向上扩展jScrollPane?

java - 静态内部类需要导入注解

javascript - 用 JavaScript 理解 instanceof