import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Main{ public static void main(String[] args) { Foo<String> foo = new Foo<String>(){}; // 在類的外部這樣獲取 Type type = ((ParameterizedType)foo.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; System.out.println(type); // 在類的內部這樣獲取 System.out.println(foo.getTClass()); } } abstract class Foo<T>{ public Class<T> getTClass() { Class<T> tClass = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0]; return tClass; } }