JAVA 泛型 反射 获取 为什么_在java中如何使用反射获取泛型信息

ffd58e78d5d6bae47b760cb30cdb5901.png

ParameterizedType就是参数化类型的意思。

解释:

声明类型中带有“<>”的都是参数化类型,比如List,Map。

getActualTypeArguments()返回Type[],即“<>”里的参数,比如Map。

getRawType()返回Tpye,得到“<>”前面的类型,比如List。

getOwnerType()返回Type,O.I类型变量调用时会返回O,比如Map.Entry。

免费教学视频分享:java课程

实例代码:import org.junit.Test;

import java.lang.reflect.Field;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.math.BigDecimal;

import java.util.Map;

public class ReflectDemo {

private static Mapmap;

@Test

public void test(){

try {

Class> aClass = Class.forName("com.test.annotation.param.ReflectDemo");

//获取map属性对象

Field field = aClass.getDeclaredField("map");

//获取map属性的类型

Type type = field.getGenericType();//返回属性声明的Type类型

if (type instanceof ParameterizedType) {

//强转为ParameterizedType对象

ParameterizedType parameterizedType = (ParameterizedType) type;

//获取原始类型

Type rawType = parameterizedType.getRawType();

System.out.println("map的原始类型为:"+rawType);

//获取map的类型的所有泛型信息

Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();

for(int i=0;i

System.out.println("Map类型的第"+(i+1)+"个泛型为:"+actualTypeArguments[i]);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行结果:

a4ba94997f99efd55d021d216183b336.png

java相关文章教程推荐:java入门教程

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页