如何知道类上的有界类型参数

时间:2011-05-20 10:24:24

标签: java generics

我宣布了这样一个类:

public class TestManagerImpl<T extends IParams> implements TestManager<T> {

  public TestManagerImpl() {}
  ...

}

我想知道,如果可以在为该类实例化对象时从IParams中提取哪种类型? 当我尝试在getClass()上进行测试时,它没有给我一个实现ParameterizedType的Type。

由于类型擦除,我读到了我不能。 Angelika Langer's Java Generics FAQ。但我不确定这与我的问题有关,不是吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以将Class对象传递给构造函数。但我不知道这是不是很好的做法。

答案 1 :(得分:2)

类型擦除正好这里的问题。您无法在运行时发现T是什么,因为编译器不保留该信息。找出答案的唯一方法是,如果你实际上有一个类型为T的对象传递给你的一个方法(@Nikita建议一个这样的机制,但当然它依赖于使用你的类的任何人的合作)。