[英]How to get generic container class of a ParameterizedType in java
我发现的有关泛型类型的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具有其他实现?
有没有比这更好的解决方案了?
谢谢。
getRawType
应该做的把戏吗?
Class<?> theClass = (Class<?>) yourParameterizedType.getRawType();
强制转换应该是安全的,因为文档说返回的值是表示声明此类型的类或接口的Type
对象 ,但是,不能保证:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.