Java 如何从类型推断参数获取类?

Java 如何从类型推断参数获取类?,java,type-inference,Java,Type Inference,我有一个类似这样的类,并且希望在方法getClazz的返回中获得示例所示的类(不起作用)。可能吗 public abstract class SuperTestClass<E> { public Class<?> getClazz() { return E.getClass(); } } 公共抽象类SuperTestClass{ 公共类getClazz(){ 返回E.getClass(); } } 除非将其作为类的成员字段,否则不能执行

我有一个类似这样的类,并且希望在方法getClazz的返回中获得示例所示的类(不起作用)。可能吗

public abstract class SuperTestClass<E> {

    public Class<?> getClazz() {
        return E.getClass();
    }
}
公共抽象类SuperTestClass{
公共类getClazz(){
返回E.getClass();
}
}

除非将其作为类的成员字段,否则不能执行此操作。由于类型擦除,泛型类型在运行时不可用。大概是这样的:

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);
    }

}
公共类SuperTestClass{
私有最终类genericClass;
公共SuperTestClass(类genericClass){
this.genericClass=genericClass;
}
//更改返回类型
公共类getClassType(){
返回此.genericClass;
}
}
//子类
公共类TestClass扩展了SuperTestClass{
公共测试类(){
超级(连接类);
}
}

是的,似乎也是这样。谢谢这不是我认为的“强制”自动方式,但它在子类中不使用args构造函数,而是使用显式推理类调用超类的构造函数(如TestClass中)。