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

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

步骤:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值