检查子类时"instanceOf"出错

MDP*_*MDP 3 java extends instanceof

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

public PersonaDecorator(Class <? extends Persona> persona) {            
    }    
Run Code Online (Sandbox Code Playgroud)

在此方法中,我需要知道,如果发送到方法的类Uomo.ClassDonna.Class.

我以为我可以这样做:

public PersonaDecorator(Class <? extends Persona> persona) {    
    if(persona instanceof Uomo){
        ......
    }       
}   
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Jon*_*eet 5

所述instanceof操作者测试是否基准(左操作数)是指一个对象,它是一个名为对右操作数的类的一个实例.

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

我怀疑你想要Class.isAssignableFrom:

if (Uomo.class.isAssignableFrom(persona))
Run Code Online (Sandbox Code Playgroud)

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

if (persona == Uomo.class)
Run Code Online (Sandbox Code Playgroud)