继续我之前的问题,我正在尝试编写一个类似这样的方法
public <T extends LivingThing> T getData(Class<T> clazz, Object otherParam) {
if(clazz instanceof Cat) {
//do something and return a new Cat
}
}
Run Code Online (Sandbox Code Playgroud)
我在if条件上遇到编译器错误"不兼容的条件操作数类型".我究竟做错了什么?如何在我的方法中检查类类型?
UPDATE
好的,我做了一个代码更改以使用isAssignableFrom方法.这是一个新问题.
public <T extends LivingThing> List<T> getData(Class<T> classType) {
LivingThingEnum livingThing = LivingThingEnum
.getLivingThing(classType);
if (livingThings.keySet().contains(livingThing))
return livingThings.get(livingThing);
return null;
}
private Map<LivingThingEnum,List<? extends LivingThing>> livingThings;
Run Code Online (Sandbox Code Playgroud)
这给了我一个类型不匹配! - "无法从列表转换为列表".是不是应该扩展LivingThing,那么在哪种情况下为什么编译器会抛出错误?
instanceof 运算符处理对象,而不是类.
例如,如果你有变量,obj你可以写:obj instanceof Cat.在您的情况下,您想检查以下内容:if (Cat.class.isAssignableFrom(clazz))