public abstract class AbstractEventHandler<T extends BaseEvent> {
/**
* 子类获取抽象父类的泛型参数类型
*
* @return {@code Class<T>}
* @author fengxin
* @date 2020/3/30/
*/
@SuppressWarnings("unchecked")
public Class<T> getEventType() {
Class<T> clazz = null;
Type superType = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) superType;
Type parameterType = parameterizedType.getActualTypeArguments()[0];
if (parameterType instanceof Class) {
clazz = (Class<T>) parameterType;
}
return clazz;
}
}
public class SampleEventHandler extends AbstractEventHandler<SampleEvent extends BaseEvent> {
public static void main(String[] args) {
SampleEventHandler sampleEventHandler = new SampleEventHandler();
Class<SampleEvent> clazz = sampleEventHandler.getEventType();
}
}