通過反射獲得泛型的實際類型參數
把泛型變量當成方法的參數,利用Method類的getGenericParameterTypes方法來獲取泛型的實際類型參數
例子:
public class GenericTest {
public static void main(String[] args) throws Exception {
getParamType();
}
/*利用反射獲取方法參數的實際參數類型*/
public static void getParamType() throws NoSuchMethodException{
Method method = GenericTest.class.getMethod("applyMap",Map.class);
//獲取方法的泛型參數的類型
Type[] types = method.getGenericParameterTypes();
System.out.println(types[0]);
//參數化的類型
ParameterizedType pType = (ParameterizedType)types[0];
//原始類型
System.out.println(pType.getRawType());
//實際類型參數
System.out.println(pType.getActualTypeArguments()[0]);
System.out.println(pType.getActualTypeArguments()[1]);
}
/*供測試參數類型的方法*/
public static void applyMap(Map<Integer,String> map){
}
}
輸出結果:
java.util.Map<java.lang.Integer, java.lang.String>
interface java.util.Map
class java.lang.Integer
class java.lang.String