由于 类型擦除, 您通常无法执行此操作-的实例
A<String>不 知道 的类型
T。如果需要,一种方法是使用类型文字:
public class A<T>{ private final Class<T> clazz; public A<T>(Class<T> clazz) { this.clazz = clazz; } // Use clazz in here}然后:
A<String> x = new A<String>(String.class);
这很丑陋,但这就是类型擦除的作用:(
另一种选择是使用类似Guice的东西
TypeLiteral。之所以有效,是因为不会删除用于指定
超类 的type参数。因此,您可以执行以下操作:
A<String> a = new A<String>() {};a现指 _子类_的
A<String>通过获取,所以
a.getClass().getSuperClass()你最终可以得到回
String。不过,这太可怕了。



