我有一个抽象类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();
<小时/>
关于java - 如何使用该类的泛型类型(Java)的泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271691/