我宣布了这样一个类:
public class TestManagerImpl<T extends IParams> implements TestManager<T> {
public TestManagerImpl() {}
...
}
我想知道,如果可以在为该类实例化对象时从IParams中提取哪种类型? 当我尝试在getClass()上进行测试时,它没有给我一个实现ParameterizedType的Type。
由于类型擦除,我读到了我不能。 Angelika Langer's Java Generics FAQ。但我不确定这与我的问题有关,不是吗?
谢谢
答案 0 :(得分:4)
您可以将Class
对象传递给构造函数。但我不知道这是不是很好的做法。
答案 1 :(得分:2)
类型擦除正好这里的问题。您无法在运行时发现T
是什么,因为编译器不保留该信息。找出答案的唯一方法是,如果你实际上有一个类型为T
的对象传递给你的一个方法(@Nikita建议一个这样的机制,但当然它依赖于使用你的类的任何人的合作)。