abstract class A<T> {
public A(){
Class clazz = this.getClass();
Type type = clazz.getGenericSuperclass();
ParameterizedType pType = (ParameterizedType) type;
Tpye[] types = pType.getActualTypeArguments();
Class c = (Class)type[0];
//Class c = (Class)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
System.out.println(c.getName());
}
}