public class TUtil {
public static <T> T getT(Object o, int i) {
try {
return ((Class<T>) ((ParameterizedType) (o.getClass()
.getGenericSuperclass())).getActualTypeArguments()[i])
.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassCastException e) {
e.printStackTrace();
}
return null;
}
public static Class<?> forName(String className) {
try {
return Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
ParameterizedType
getClass().getGenericSuperclass()
返回表示此 Class 所表示的實體(類、接口、基本類型或 void)的直接超類的 Type,然後將其轉換ParameterizedType。
getActualTypeArguments()
返回表示此類型實際類型參數的 Type 對象的數組。[0]就是這個數組中第一個了。簡而言之就是獲得超類的泛型參數的實際類型。