展开全部
泛型在编译时会被 类型擦除,e69da5e6ba9062616964757a686964616f31333332633030就是编译器无视你的泛型的。泛型只是给你写代码时做规范的~~~~~。
不过有一种情况泛型是可以反射出来的。类中明确定义的属性的类型,如果上面有泛型,是可以得出来的,不过是字符串,需要自己加载相应类。public class GenericPractice {
private List myParams;
public List getMyParams(){return myParams;}
public static void main(String args[]){
Class> claz= GenericPractice.class;
try {
Type type=claz.getMethod("getMyParams").getGenericReturnType();
//TypeVariable>[] types=claz.getTypeParameters();
//.getDeclaredField("myParams").getGenericType();
// for(TypeVariable tv:types){
// System.out.println(tv.getName());
// }
System.out.println(type.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
那个Decalared 去把私有变量搞出来的事情还是少做为好~, 方法 Method可以返回 GenericReturnType, 可以返回GenericExceptionType, 还可返回 GenericParamType.你应该都懂了~