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{
}
}


鄂公网安备 42018502001427号
发表评论