为了账号安全,请及时绑定邮箱和手机立即绑定

使用反射获取Java中泛型参数的类型

使用反射获取Java中泛型参数的类型

不负相思意 2019-06-27 17:06:03
使用反射获取Java中泛型参数的类型是否可能获得泛型参数的类型?例如:public final class Voodoo {     public static void chill(List<?> aListWithTypeSpiderMan) {         // Here I'd like to get the Class-Object 'SpiderMan'         Class typeOfTheList = ???;     }     public static void main(String... args) {         chill(new ArrayList<SpiderMan>());     }}
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

有一次,我偶然发现

Class<T> persistentClass = (Class<T>)
   ((ParameterizedType)getClass().getGenericSuperclass())
      .getActualTypeArguments()[0];

所以似乎有一些我不太理解的倒影魔法.抱歉的。


查看完整回答
反对 回复 2019-06-27
?
富国沪深

TA贡献1790条经验 获得超9个赞

实际上我能搞定这件事。考虑以下片段:

Method m;Type[] genericParameterTypes = m.getGenericParameterTypes();for (int i = 0; i < genericParameterTypes.length; i++) {
     if( genericParameterTypes[i] instanceof ParameterizedType ) {
                Type[] parameters = ((ParameterizedType)genericParameterTypes[i]).getActualTypeArguments();//parameters[0] contains java.lang.String for method like "method(List<String> value)"

     }
 }

我使用JDK 1.6


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 748 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信