Java反射--獲取類方法的泛型返回或泛型引數
阿新 • • 發佈:2021-01-01
Java反射--獲取類方法的泛型返回或泛型引數
一.測試類
public class Test02 {
public void parameterTest(Map<Integer, Dog> map){
}
public Map<Integer,Dog> returnTest(){
return new HashMap<Integer, Dog>();
}
}
二.獲取方法的泛型引數
@Test //獲取方法的引數中的泛型資訊 public void test() throws NoSuchMethodException { Method method = Test02.class.getMethod("parameterTest", Map.class); //獲取方法的引數型別 Type[] genericParameterTypes = method.getGenericParameterTypes(); for (Type genericParameterType : genericParameterTypes) { System.out.println("type:"+genericParameterType); //ParameterizedType:表示一種引數化型別,比如Collection<Object> if(genericParameterType instanceof ParameterizedType){ Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments(); for (Type parameterType : actualTypeArguments) { System.out.println(parameterType); } } } }
三.獲取方法的泛型返回
@Test //獲取方法的返回值中的泛型資訊 public void test2() throws NoSuchMethodException { Method method = Test02.class.getMethod("returnTest"); //獲取方法的返回值型別 Type genericReturnType = method.getGenericReturnType(); if(genericReturnType instanceof ParameterizedType){ Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments(); for (Type parameterType : actualTypeArguments) { System.out.println(parameterType); } } }
Java之反射機制六:獲取方法的泛型資訊 - 秋風颯颯吹 - 部落格園
https://www.cnblogs.com/wwjj4811/p/12592443.html