Java反射CAP#1投射错误

时间:2015-11-25 09:16:07

标签: java reflection casting

我正在研究一个java项目,这是我的代码:

Class<? extends Component> componentClass = componentField.getType();
Component tempComponent = entity.get(componentClass);

这是我的错误:

incompatible types: Class<CAP#1> cannot be converted to Class<? extends Component> where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?

componentField是一个字段,我知道它扩展了Component,当我尝试获取它返回类型的新类型CAP#1时,是否可以将它转换为从组件扩展的类? entity.get()是一个以<T extends Component>为参数的通用方法。

1 个答案:

答案 0 :(得分:0)

有什么区别?它是

 Class<?> or Class<? extends Component>  

如果你想检查Class是extendeding Component ..为什么不使用Class#isAssignableFrom(Class type)

Class componentClass = componentField.getType(); 
if(componentClass != Component.Class && Component.isAssignableFrom(componentClass){
 Component tempComp = entity.get(componentClass);
}