虽然我传递了派生数据类型,但在最后一行执行中确实存在问题。无法弄清楚。感谢。
public class ExtendedDHvalue extends DHvalue {}
public class DerivedHolderUnique<T> {
private Class<? extends T> a;
public DerivedHolderUnique(Class<? extends T> a){
this.a = a;
}
public Class<? extends T> getA() {
return a;
}
public void setA(Class<? extends T> a) {
this.a = a;
}
public static void main(String[] args){
ExtendedDHvalue eDV = new ExtendedDHvalue();
DerivedHolderUnique<DHvalue> dhu = new DerivedHolderUnique<DHvalue>(eDV);
}
}
答案 0 :(得分:1)
你的构造函数接受类型为Class<? extends T>
的参数,并且你传递了一个将T
扩展到它的参数。您应该将这两行更改为:
Class<ExtendedDHvalue> eDV = ExtendedDHvalue.class;
DerivedHolderUnique<DHvalue> dhu = new DerivedHolderUnique<DHvalue>(eDV);
答案 1 :(得分:0)
您的DerivedHolderUnique
构造函数需要Class
个实例,而不是实例
一个ExtendedDHvalue
个实例。这是导致编译时错误的原因。
你应该想想你是否真的想要
private Class<? extends T> a;
或
private T a;
然后相应地修改你的DerivedHolderUnique
课程
我倾向于认为你想要后者,但你应该知道更好。