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

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

步骤:

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
        }       
    }
}


阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页