检查子类时 "instanceOf" 出错

Error on "instanceOf" when checking a subClass

我有一个方法,它接受所有扩展 Persona.Class 的 class 作为参数(Uomo.ClassDonna.Class 扩展 Persona.Class)。

public PersonaDecorator(Class <? extends Persona> persona) {            
    }    

在这个方法里面,我需要知道发送给方法的class是Uomo.Class还是Donna.Class

我以为我可以做这样的事情:

public PersonaDecorator(Class <? extends Persona> persona) {    
    if(persona instanceof Uomo){
        ......
    }       
}   

但是我得到这个错误:Incompatible conditional operand types Class<capture#1-of ? extends Persona> and Uomo

谢谢

instanceof 运算符测试一个引用(左操作数)是否引用一个对象,该对象是在右操作数上命名的 class 的实例。

这里,persona 将是对 Class 实例的引用,而 Class 的实例永远不能是 Persona 的实例。你正在测试一个不可能的条件,编译器会帮助你告诉你这个错误。

我怀疑你想要Class.isAssignableFrom:

if (Uomo.class.isAssignableFrom(persona))

那也会找到 Uomo 的子 classes。如果你想测试它是否 完全 Uomo class,你可以使用:

if (persona == Uomo.class)