MyGenericType.java
package generic;
public class MyGenericType {
}
Father.java
package generic;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Father<T> {
private Class<T> genericType = null;
@SuppressWarnings("unchecked")
public Father(){
Type type = this.getClass().getGenericSuperclass();
if(type instanceof ParameterizedType){
ParameterizedType genericTypes = (ParameterizedType) type;
genericType = (Class<T>) genericTypes.getActualTypeArguments()[0];
}
}
public void printGenericTypeName(){
System.out.println(genericType.getName());
}
}
Child.java
package generic;
public class Child extends Father<MyGenericType>{
public Child(){}
public static void main(String[] args) {
Child child = new Child();
child.printGenericTypeName();
}
}
運行結果:
generic.MyGenericType