package com.xiongyingqi.util; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.LinkedHashMap; import java.util.Map; /** * Created by 瑛琪<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 2014/10/20 0020. */ public class GenericHelper<T> { public Type[] getMethodReturnGenericTypes(Method method) { Assert.notNull(method, "方法为空!"); Type genericReturnType = method.getGenericReturnType(); if (genericReturnType instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) genericReturnType; // Type rawType = parameterizedType.getRawType(); // for (Type type : parameterizedType.getActualTypeArguments()) { // System.out.println(type); // } return parameterizedType.getActualTypeArguments(); } return null; } public Map<Integer, Type[]> getMethodArgumentGenericTypes(Method method) { int i = 0; Map<Integer, Type[]> argumentIndexAndGenericTypeMap = new LinkedHashMap<Integer, Type[]>(); Type[] types = method.getGenericParameterTypes(); for (Type type : types) { if (type instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) type; // Type type1 = parameterizedType.getRawType(); Type[] genericTypes = parameterizedType.getActualTypeArguments(); argumentIndexAndGenericTypeMap.put(i, genericTypes); } else { argumentIndexAndGenericTypeMap.put(i, null); } i++; } return argumentIndexAndGenericTypeMap; } }