Java 注解与反射(六)反射操作泛型
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
public class Test04 {
public void test01(Map<String,User> map,List<User> list){ //参数为泛型
System.out.println("test01");
}
public Map<String,User> test02(){ //返回值为泛型
System.out.println("test02");
return null;
}
public static void main(String[] args) throws NoSuchMethodException {
Method method = Test04.class.getMethod("test01", Map.class, List.class); //获取test01()的参数泛型
Type[] genericParameterTypes = method.getGenericParameterTypes();
for (Type genericParameterType : genericParameterTypes) {
System.out.println("泛型参数类型:"+genericParameterType);
if(genericParameterType instanceof ParameterizedType){
Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments();
for (Type actualTypeArgument : actualTypeArguments) {
System.out.println(" 真实参数类型:"+actualTypeArgument);
}
}
}
System.out.println("--------------------------");
method = Test04.class.getMethod("test02"); //获取test02()的返回值泛型
Type genericReturnType = method.getGenericReturnType();
if(genericReturnType instanceof ParameterizedType){
Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments();
for (Type actualTypeArgument : actualTypeArguments) {
System.out.println("真实返回类型:"+actualTypeArgument);
}
}
}
}