泛型——反射来获取泛型信息

利用反射来获取泛型的类型(泛型信息)

步骤:

1.获取当前类

2.获取目标字段

3.获取包含泛型类型的类型 getGenericType()

4.强转至子类ParameterizedType

5.获得泛型真正的类型 getActualTypeArguments()

package cn_itcast02; import java.lang.reflect.Field; import java.lang.reflect.Parameter; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; public class Demo1 { Map<String, Integer> map = new HashMap<String, Integer>(); public static void main(String[] args) throws NoSuchFieldException, SecurityException { Class c = Demo1.class; Field f = c.getDeclaredField("map"); System.out.println(f); System.out.println(f.getName()); Class c1=f.getType(); System.out.println(c1);//获得其类型:interface java.util.Map Type t=f.getGenericType();//包含泛型的类型 System.out.println(t);//java.util.Map<java.lang.String, java.lang.Integer> ParameterizedType pt=(ParameterizedType)t; t=pt.getRawType(); System.out.println(t);//ParameterizedType Type[]ts=pt.getActualTypeArguments(); for(Type type:ts){ System.out.println(type);//class java.lang.String,class java.lang.Integer } } }

经验分享 程序员 微信小程序 职场和发展