参数化类型
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数组,数组里是参数化类型的参数