java – 检查子类时“instanceOf”出错

我有一个方法,接受所有扩展Persona.Class的类(Uomo.Class和Donna.Class扩展Persona.Class)作为参数.

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

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

我以为我可以这样做:

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

但是我得到了这个错误:不兼容的条件操作数类型Class< capture#1-of?延伸Persona>和Uomo 谢谢

解决方法:

instanceof运算符测试引用(左操作数)是否引用作为右操作数上指定的类的实例的对象.

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

我怀疑你想要Class.isAssignableFrom:

if (Uomo.class.isAssignableFrom(persona))

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

if (persona == Uomo.class)
上一篇:java接口的多继承


下一篇:php – 另一个继承问题