public class Genericity {
/**
* 反射操作泛型
*/
public static void text1(Map<Integer, Stu> map,List<Stu> list){
}
public static Map<Integer,Stu> text2(){
return null;
}
@SuppressWarnings("all")
public static void main(String[] args) {
try {
//获取指定方法参数的泛型信息
Method m = Genericity.class.getDeclaredMethod("text1", Map.class,List.class);
Type[] types = m.getGenericParameterTypes();
for (Type t : types) {
System.out.println("*"+t);
if(t instanceof ParameterizedType){
Type[] type = ((ParameterizedType) t).getActualTypeArguments();
for (Type tp : type) {
System.out.println("泛型:"+tp);
}
}
}
//获取方法返回值参数泛型信息
Method mt = Genericity.class.getDeclaredMethod("text2", null);
Type genericReturnType = mt.getGenericReturnType();
if(genericReturnType instanceof ParameterizedType){
Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments();
for (Type type : actualTypeArguments) {
System.out.println("返回值参数泛型:"+type);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java使用反射读取泛型
最新推荐文章于 2022-10-16 20:51:38 发布