我有通用类:
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());
我的通用类有什么问题?
您的实例是一个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] 删除。
我来说两句