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 instanceofclass A {
}
class B {
public void test(A a){
if (a instanceof AA){
}
}
class AA extends A{
}
}
原因是编译器不知道AA的类型到底是什么了,因为要确定内部类AA的类型,得先确定class B 中T的类型,所以报错
解决方法,明确B的类型(写法有点奇怪)public void test(A a){
B 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{
}
}