在下面的示例中,泛型类型信息可在运行时通过ParameterizedType
类获得。
import java.lang.reflect.Type;
import java.lang.reflect.ParameterizedType;
class Generic<T> {};
class NonGeneric extends Generic<Integer> {};
class Main {
public static void main(String[] args) {
ParameterizedType parameterizedType =
(ParameterizedType)
new NonGeneric().getClass().getGenericSuperclass();
for (Type typeArg : parameterizedType.getActualTypeArguments()) {
System.out.println(typeArg);
}
}
}
输出:
class java.lang.Integer
鉴于类型擦除的性质,这怎么可能?我曾希望此信息不可用。