加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java 反射操作泛型

发布时间:2020-12-15 07:46:01 所属栏目:Java 来源:网络整理
导读:public class emm { public void test01(MapString,Usermap,ListUserlist) { System.out.println("test01"); } public MapString,User test02() { System.out.println("test02"); return null; } public static void main(String[] args) { try { Method m=e
public class emm { public void test01(Map<String,User>map,List<User>list) { System.out.println("test01"); } public Map<String,User> test02() { System.out.println("test02"); return null; } public static void main(String[] args) { try { Method m=emm.class.getMethod("test01",Map.class,List.class); //反射方法 Type[] t=m.getGenericParameterTypes(); //获得带泛型的参数类型,返回的是type类型的数组 for(Type paramType:t) { System.out.println("#"+paramType); if(paramType instanceof ParameterizedType) { //判断是不是一个规范化参数类型 //如果是强制转为规范化带泛型的参数类型,因为可能有多个泛型类型,所以用数组 Type[] genericTypes=((ParameterizedType) paramType).getActualTypeArguments();//获得真正的泛型的类型,String、User for(Type genericType:genericTypes) { System.out.println("泛型类型"+genericType); } } } Method m2=emm.class.getMethod("test02",null); Type returnType=m2.getGenericReturnType(); //获得带泛型的返回类型 if(returnType instanceof ParameterizedType) //判断是不是规范化的带泛型的返回类型 { //强制转换成规范化的带泛型的参数类型 Type[] genericTypes=((ParameterizedType)returnType).getActualTypeArguments(); for(Type genericType:genericTypes) { System.out.println("返回值泛型类型"+genericType); } } }catch(Exception e) { e.printStackTrace(); } } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读