首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

反照与泛型

2012-09-08 
反射与泛型package testimport java.lang.reflect.Fieldimport java.lang.reflect.ParameterizedTypeim

反射与泛型

package test;import java.lang.reflect.Field;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.sql.Date;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;class Wolf{private String name;private List<Wolf> li = new ArrayList();private Map<String,Date> map = new HashMap();}public class GenericDemo {public static void main(String[] args) throws Exception{Class<Wolf> clz = Wolf.class;/*Field [] ff = clz.getDeclaredFields();for (Field field : ff) {System.out.println(field);}*///获取私有属性listField fli = clz.getDeclaredField("li");//忽略权限fli.setAccessible(true);//获取List的基本类型,没有获取到泛型System.out.println("List基本类型 : "+fli.getType());//没有获取到泛型//用getGenericType的方法获取到泛型类型Type genericType = fli.getGenericType();//获取泛型类型System.out.println("List泛型类型 : "+genericType);//增加泛型后的类型ParameterizedType paraType = (ParameterizedType) genericType;//获取泛型参数列表Type[] paraGeneric=paraType.getActualTypeArguments();//循环取出每一个泛型for (Type type : paraGeneric) {System.out.println("List的泛型 : "+type);}//被泛型限制的类型System.out.println("被泛型限制的类型(list)  : "+paraType.getRawType());//得到私有属性mapField fmap= clz.getDeclaredField("map");//忽略权限fmap.setAccessible(true);//用getGenericType的方法获取到泛型类型Type genericType1 = fmap.getGenericType();System.out.println("map的泛型类型 : "+genericType1);//增加泛型后的类型ParameterizedType paraType1 = (ParameterizedType) genericType1;//获取泛型参数列表Type[] paraGeneric1 = paraType1.getActualTypeArguments();//循环取出每一个泛型for (Type type : paraGeneric1) {System.out.println("map的范型 : "+type);}System.out.println("被泛型限制的类型(map) : "+paraType1.getRawType());}}
?

热点排行