我发现的关于泛型类型的 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 或正则表达式从 ParameterizedTypeImpl.toString() 中获取 java.util.List,然后使用 class.forName 获取该类。 但不知道便携性如何。 java 的某些版本是否可能对 ParameterizedTypeImpl 的 toString 有其他实现?
还有比这更好的解决方案吗?
谢谢。
最佳答案
getRawType
应该这样做吗?
Class<?> theClass = (Class<?>) yourParameterizedType.getRawType();
强制转换应该是安全的,因为文档说返回的值是表示声明此类型的类或接口(interface)的 Type
对象,但是,没有任何保证:)
关于java - 如何在java中获取ParameterizedType的通用容器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543714/