在Java中捕获泛型类型
如果我有类似于:
class Test<T extends X> {
public T test() {
T t = /* ... */;
return t;
}
}
如何捕获T
的类以便实例化它?是否有防止类型擦除的变通方法?我甚至不需要访问T
的方法,X
的方法就可以了,但我需要返回一个T
你可以在下面搜索框中键入要查询的问题!
如果我有类似于:
class Test<T extends X> {
public T test() {
T t = /* ... */;
return t;
}
}
如何捕获T
的类以便实例化它?是否有防止类型擦除的变通方法?我甚至不需要访问T
的方法,X
的方法就可以了,但我需要返回一个T
# 1 楼答案
您唯一能做的就是将T类作为额外参数传递给
test()
或在类Test
中设置一个成员字段。您无法阻止类型擦除或者,也可以将factory对象传递到相同的效果。当您需要使用除默认构造函数以外的其他方法时,这种方法非常有效
# 2 楼答案
将其定义为:
然后像这样使用它:
# 3 楼答案
您不能直接这样做,但是您可以添加一个t实现的接口来创建一个实例或一个t的数组