packagecom.waibizi;importjava.lang.reflect.Method;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importjava.util.List;importjava.util.Map;importbean.User;/*** 通过反射读取泛型信息
*@author吴典秋
**/
public classGet_generic_info {public void test01(Map map,Listlist){
System.out.println("Demo04.test01()");
}public Maptest02(){
System.out.println("Demo04.test02()");return null;
}
@SuppressWarnings("all") //压制所有的警告
public static voidmain(String[] args) {//TODO Auto-generated method stub
try{//获得指定方法参数泛型信息
Method m = Get_generic_info.class.getMethod("test01", Map.class,List.class);
Type[] t=m.getGenericParameterTypes();for(Type paramType : t) {
System.out.println("#"+paramType);if(paramType instanceofParameterizedType){
Type[] genericTypes=((ParameterizedType) paramType).getActualTypeArguments();for(Type genericType : genericTypes) {
System.out.println("泛型类型:"+genericType);
}
}
}//获得指定方法返回值泛型信息
Method m2 = Get_generic_info.class.getMethod("test02", null);
Type returnType=m2.getGenericReturnType();if(returnType instanceofParameterizedType){
Type[] genericTypes=((ParameterizedType) returnType).getActualTypeArguments();for(Type genericType : genericTypes) {
System.out.println("返回值,泛型类型:"+genericType);
}
}
}catch(NoSuchMethodException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(SecurityException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}