gpt4 book ai didi

java - 与泛型、java 的混淆

转载 作者:行者123 更新时间:2023-12-02 05:01:28 24 4
gpt4 key购买 nike

我有通用类:

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 并通过 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()); 行中遇到编译错误

我的泛型类有什么问题?

最佳答案

您的实例在当前编写时是一个 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

关于java - 与泛型、java 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com