使用通配符类只会导致警告。但是这个方法出了什么问题,我得到编译器错误' ...无法从类SubclassX转换为Class'
public static <T extends Superclass> void createInstance(Class<T> param) {
if (param == null) {
if (whatever) {
param = Subclass1.class; // Comp-Error
} else if (whatever2) {
param = Subclass2.class; // Comp-Error
} else {
// Error
}
}
}
编辑: 可以肯定的是,Subclass1和Subclass2正在扩展Superclass。
答案 0 :(得分:0)
T
(例如ContainingClass.createInstance(Subclass2.class)
表示T = Class<Subclass1>
)。不保证Subclass1.class
(Class<Subclass1>
)或Subclass2.class
(a Class<Subclass2>
)可分配给Class<T>
。事实上,没有类T
这样两者都可以分配。