ParameterizedType参数化类型

参数化类型

public interface ParameterizedType extends Type {
    Type[] getActualTypeArguments();

    Type getRawType();

    Type getOwnerType();
}

何为参数化类型
列举一个实体类用代码来解释什么是参数化类型

public class ParameterizedBean {
    List<String> list1;
    List list2;
    Map<String,Long> map1;
    Map map2;
    Map.Entry<Long,Short> map3;
}

测试代码

Field[] fields = ParameterizedBean.class.getDeclaredFields();
for(Field f:fields){
    //是否是ParameterizedType
    System.out.print(f.getName()+":"+(f.getGenericType() instanceof ParameterizedType));
}

打印结果

list1:true
list2:false
map1:true
map2:false
map3:true

从打印结果看来,具有<>符号的变量是参数化类型

Type[] getActualTypeArguments()

该方法返回一个Type数组
测试代码

Field[] fields = ParameterizedBean.class.getDeclaredFields();
for(Field f:fields){
    if(f.getGenericType() instanceof ParameterizedType){
        ParameterizedType pType =(ParameterizedType) f.getGenericType();
System.out.print("变量:"+pType.getTypeName()+"     ");
              Type[] types =pType.getActualTypeArguments();
              for(Type t:types){
System.out.print("类型:"+t.getTypeName());
              }
}

先把实体类放下来,免得往上翻

public class ParameterizedBean {
    List<String> list1;
    List list2;
    Map<String,Long> map1;
    Map map2;
    Map.Entry<Long,Short> map3;
}

打印结果

变量:list1     类型:java.lang.String
变量:map1     类型:java.lang.String类型:java.lang.Long
变量:map3     类型:java.lang.Long类型:java.lang.Short   

从打印结果返回来看,getActualTypeArguments()返回了一个Type数组,数组里是参数化类型的参数

参考:ParameterizedType详解
Java反射-基于ParameterizedType实现泛型类类型参数化

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值