使用instanceof时报错:illegal generic type of instanceof

2019-03-01 14:08:12  阅读 8306 次 评论 0 条

JAVA泛型类中使用 instanceof检查内部类型时报错。分析步骤

有如下代码,此时编译正常

class A {

}

class B {
	public void test(A a){

		if (a instanceof AA){

		}
	}

	class AA extends A{

	}

}

但将B类改为泛型后 test方法中AA处提示错误illegal generic type of instanceof

class A {

}

class B<T> {
	public void test(A a){

		if (a instanceof AA){

		}
	}

	class AA extends A{

	}

}

原因是编译器不知道AA的类型到底是什么了,因为要确定内部类AA的类型,得先确定class B<T> 中T的类型,所以报错

解决方法,明确B的类型(写法有点奇怪)

public void test(A a){

    B<String> b = new B<>();
    if (a instanceof B.AA){

    }
}

或者直接将AA这个内部类改为静态,即

class B {
	public void test(A a){

		if (a instanceof AA){

		}
	}

	class static AA extends A{

	}

}


本文地址:http://www.bloguan.com/?id=510
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?