首页 > 代码库 > 通过反射获取泛型信息
通过反射获取泛型信息
1 package com.coscon.reflectionTest; 2 3 import java.lang.reflect.Method; 4 import java.lang.reflect.ParameterizedType; 5 import java.lang.reflect.Type; 6 import java.util.List; 7 import java.util.Map; 8 9 //用过反射获取泛型信息10 public class ReflectionForGenerics {11 public void test01(Map<String,User> map,List<User> users){12 System.out.println("test01");13 }14 15 public Map<Integer,User> test02(){16 System.out.println("test02");17 return null;18 }19 20 public static void main(String[] args) {21 try {22 Class clazz = Class.forName("com.coscon.reflectionTest.ReflectionForGenerics");23 //获得指定方法参数泛型信息24 Method method = clazz.getMethod("test01", Map.class,List.class);25 //获取泛型参数26 Type[] types = method.getGenericParameterTypes();27 for (Type type : types) {28 System.out.println("#"+type);29 if(type instanceof ParameterizedType){30 Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments();31 for (Type type2 : actualTypeArguments) {32 System.out.println("泛型参数类型:"+type2);33 }34 }35 }36 37 System.out.println("--------------------------------------------------------------");38 Method method2 = clazz.getMethod("test02", null);39 //获取返回值泛型信息40 Type returnType = method2.getGenericReturnType();41 System.out.println("#"+returnType);42 if(returnType instanceof ParameterizedType){43 Type[] typeArguments = ((ParameterizedType) returnType).getActualTypeArguments();44 for (Type type : typeArguments) {45 System.out.println("返回值泛型类型:"+type);46 }47 }48 } catch (Exception e) {49 // TODO Auto-generated catch block50 e.printStackTrace();51 }52 }53 }
打印结果
#java.util.Map<java.lang.String, com.coscon.reflectionTest.User>
泛型参数类型:class java.lang.String
泛型参数类型:class com.coscon.reflectionTest.User
#java.util.List<com.coscon.reflectionTest.User>
泛型参数类型:class com.coscon.reflectionTest.User
--------------------------------------------------------------
#java.util.Map<java.lang.Integer, com.coscon.reflectionTest.User>
返回值泛型类型:class java.lang.Integer
返回值泛型类型:class com.coscon.reflectionTest.User
通过反射获取泛型信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。