java如何获取泛型的class
public abstract class PreAndPostDealMode<IN, T, RES, OUT> {
final Class<RES> clazz;
public PreAndPostDealMode() {
//思考 如何获取RES这个泛型的class呢?
}
}
我们首先使用 getClass().getGenericSuperclass() 方法获取表示当前类的带有泛型类型参数的父类的 Type 对象。如果该对象是 ParameterizedType 的实例,则我们可以使用 getActualTypeArguments() 方法获取表示泛型类型参数的 Type 数组。在本例中,我们假设只有一个泛型类型参数,因此我们可以直接获取该数组的第一个元素,并将其强制转换为泛型类型参数的 Class 对象
public abstract class PreAndPostDealMode<IN, T, RES, OUT> {
Class<RES> clazz;
public PreAndPostDealMode() {
Type type = getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) type;
Type typeArg = parameterizedType.getActualTypeArguments()[2];
this.clazz = (Class<RES>) typeArg;
}
}