通用类和传递派生数据类型

时间:2014-02-08 18:29:00

标签: java generics

虽然我传递了派生数据类型,但在最后一行执行中确实存在问题。无法弄清楚。感谢。

     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);
    }
}

2 个答案:

答案 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课程 我倾向于认为你想要后者,但你应该知道更好。