实际上, 没有 类型擦除的实用方法,因为您不能要求运行时无法访问的内容。当然,假设您同意为实现
Bar接口的每个枚举子类化通用类是一个实际的解决方法。
enum Test implements Bar { ONE, TWO}class Foo<T> extends FooAbstract<Test> { public Foo() { ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass(); baz((Class<T>) genericSuperclass.getActualTypeArguments()[0]); } private void baz(Class<T> qux) { T[] constants = qux.getEnumConstants(); System.out.println(Arrays.toString(constants)); // print [ONE, TWO] }}interface Bar {}class FooAbstract<T extends Enum<?> & Bar> {}


