gpt4 book ai didi

java - 如何使用该类的泛型类型(Java)的泛型类型?

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

我有一个抽象类A<T>带有通用通配符 T。 A 有两个扩展,

public class A1 extends A<Integer> {...}

public class A2 extends A<String> {...}

现在我有另一个类,我们称之为 B,它基本上是 A1 或 A2 的集合。所以我将其定义为泛型类型 T extends A 的类:

public class B<T extends A> {...}

我希望能够在 B 中创建返回 T 泛型类型的方法。例如,

B<A1> foo = new B<A1>;
foo.get(); // returns Integer, corresponding to A1's generic type

B<A2> bar = new B<A2>;
bar.get(); // returns String, corresponding to A2's generic type

用Java可以做到这一点吗?在声明 B 的方法时,我无法确定要放置的返回类型(如果我希望 B 返回 T,我会放置 public T get() {...} ,但实际上我想返回参数化类型 T)。或者是否有一种模式可以比我处理问题的方式更好地解决这个问题?

谢谢。

最佳答案

您可以为 B 声明第二个类型参数,并将其作为 A 的参数化

class B<K, T extends A<K>> {
public K get() {
// actual implementation
return null;
}
}

然后声明你的变量

B<String, A2> var = new B<>();
String ret = var.get();
<小时/>

What is a raw type and why shouldn't we use it?

关于java - 如何使用该类的泛型类型(Java)的泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271691/

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