我有个普通课程:
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");
}
}最后,我有一个类,我想在其中存储具有特定类型的make泛型类测试,并通过setInstance()方法设置对象setInstance()A的新实例:
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());中的编译错误
我的泛型类有什么问题?
发布于 2015-01-31 14:19:21
您的实例是当前编写的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。
发布于 2015-01-31 14:20:16
看来你把事情弄得比需要的要复杂。您可能希望在测试类中使用这个,而不是实际拥有的:
private T myInstance;
public T getInstance () {
return myInstance;
}
public void setInstance (T argType) {
this.myInstance = argType;
}有了这种安排,您就可以在一个setInstance(new A())实例上使用Test<Alphabet>了。
https://stackoverflow.com/questions/28252524
复制相似问题