我有一个方法,它接受所有扩展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){
......
}
}
但是我收到了这个错误:Incompatible conditional operand types Class<capture#1-of ? extends Persona> and Uomo
谢谢
答案 0 :(得分:5)
instanceof
运算符测试引用(左操作数)是否引用作为右操作数上命名的类的实例的对象。
此处,persona
将是Class
实例的引用,而Class
的实例永远不会是Persona
的实例。您正在测试一个不可能的条件,编译器会帮助您告诉您这个错误。
我怀疑你想要Class.isAssignableFrom
:
if (Uomo.class.isAssignableFrom(persona))
那也会找到Uomo
的子类。如果您想测试它是否完全 Uomo
类,您可以使用:
if (persona == Uomo.class)