1. 程式人生 > 其它 >Java反射--獲取類方法的泛型返回或泛型引數

Java反射--獲取類方法的泛型返回或泛型引數

技術標籤:javajava反射泛型引數返回

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