您好,欢迎访问一九零五行业门户网

在java中如何使用反射获取泛型信息

parameterizedtype就是参数化类型的意思。
解释:
声明类型中带有“a8093152e673feb7aba1828c43532094”的都是参数化类型,比如listc0f559cc8d56b43654fcbe4aa9df7b4a,mapd1e67c31fc58380b97f9b4916b179774。
getactualtypearguments()返回type[],即“a8093152e673feb7aba1828c43532094”里的参数,比如mapd1e67c31fc58380b97f9b4916b179774。
getrawtype()返回tpye,得到“a8093152e673feb7aba1828c43532094”前面的类型,比如listf7e83be87db5cd2d9a8a0b8117b38cd4。
getownertype()返回type,o8742468051c85b06f0a0af9e3e506b5c.i1eefd63bbe027a2807ccada294a3372c类型变量调用时会返回o8742468051c85b06f0a0af9e3e506b5c,比如map.entry2b6c90c6c4dd54d4a44f8fd07f87fa2c。
免费教学视频分享: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 map<string, bigdecimal>map; @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<actualtypearguments.length;i++){ system.out.println("map类型的第"+(i+1)+"个泛型为:"+actualtypearguments[i]); } } } catch (exception e) { e.printstacktrace(); } }}
运行结果:
java相关文章教程推荐:java入门教程
以上就是在java中如何使用反射获取泛型信息的详细内容。
其它类似信息

推荐信息