如何在java中获取ParameterizedType的通用容器类

时间:2015-02-16 14:33:57

标签: java generics reflection

关于我发现的泛型类型的java反射的每个问题,都在询问获取泛型类型的参数。 在我的例子中,我有一个ParameterizedType,并希望得到Generic容器类。

例如,假设一个

ParameterizedTypeImpl.toString()

返回

java.util.List<test.Bar>

现在我想获得一个java.util.List类。

听起来可能听起来有点不合适,但我需要你假设它就是它!

所以我需要的是像

 Class cls = ((MagicCast)ParameterizedTypeImpl.mayBeAMagicHere()).someOtherMagic();
 //Now cls is of type List

我能想到的唯一方法是使用subString或regex从ParameterizedTypeImpl.toString()中获取java.util.List,然后使用class.forName来获取类。 但我不知道它有多便携。某些版本的java是否有可能为ParameterizedTypeImpl的toString实现其他实现?

有没有比这更好的解决方案?

谢谢。

1 个答案:

答案 0 :(得分:2)

getRawType应该做什么?

Class<?> theClass = (Class<?>) yourParameterizedType.getRawType();

演员应该是安全的,因为文档说返回的值是 Type对象,表示声明此类型的类或接口,但是,不能保证:)< / p>