如何从Type Inference参数中获取Class?

时间:2014-03-31 00:52:23

标签: java type-inference

我有一个这样的类,并希望得到示例所示的类(这不起作用)以返回方法getClazz。有可能吗?

public abstract class SuperTestClass<E> {

    public Class<?> getClazz() {
        return E.getClass();
    }
}

1 个答案:

答案 0 :(得分:2)

除非您将其作为班级的成员字段,否则不能。由于类型擦除,泛型类型在运行时不可用。像这样:

public class SuperTestClass<E> {

  private final Class<E> genericClass;

  public SuperTestClass(Class<E> genericClass) {
    this.genericClass = genericClass;
  }

  // Changed return type
  public Class<E> getClassType() {
    return this.genericClass;
  }
}


// Subclass
public class TestClass extends SuperTestClass<Connection> {

    public TestClass() {
        super(Connection.class);
    }

}