关于我发现的泛型类型的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实现其他实现?
有没有比这更好的解决方案?
谢谢。
答案 0 :(得分:2)
getRawType
应该做什么?
Class<?> theClass = (Class<?>) yourParameterizedType.getRawType();
演员应该是安全的,因为文档说返回的值是 Type
对象,表示声明此类型的类或接口,但是,不能保证:)< / p>