与泛型,Java的混淆

java_user

我有通用类:

public class Test<T> {

    private Test<? extends T> myInstance;

    public Test<? extends T> getInstance () {
      return myInstance;
    }

    public void setInstance (Test<? extends T> argType) {
        this.myInstance = argType;
    }

}

我的班级层次结构关系中有两个班级:

public abstract class Alphabet {
    //code here
}

public class A extends Alphabet{

   public A() {
       super();
       System.out.print("This is A call");
   }
}

最后,我有一个要在其中存储具有特定类型的通用类Test的类,并设置Object-> A throughsetInstance()方法的新实例

public static void main(String[] args) {
        List<Alphabet> list = new ArrayList<Alphabet>();

        Test<Alphabet> tAlphabet = new Test<Alphabet>();
        tAlphabet.setInstance(new A()); //Here is compilation ERROR
}

但是我遇到了编译错误 tAlphabet.setInstance(new A());

我的通用类有什么问题?

丹尼斯·W

您的实例是一个Test当前编写对象,而您正在为其提供一个Alphabet对象。您可能希望实例的类型为Alphabet

public class Test<T> {
    private T myInstance;

    public T getInstance() {
        return myInstance;
    }

    public void setInstance(T argType) {
        myInstance = argType;
    }
}

这样,您的Test商店将存储一个Alphabet而不是另一个Test

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章