我有一个这样的类,并希望得到示例所示的类(这不起作用)以返回方法getClazz。有可能吗?
public abstract class SuperTestClass<E> {
public Class<?> getClazz() {
return E.getClass();
}
}
答案 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);
}
}