这是我的代码:
抽象类
public abstract class AbstractClass<T>{
public abstract Class<?> getPersistentClass();
public void invokeNothing(){
Class<T> c = getPersistentClass();
// do something....
// some code...
}
}
CommonClass
public class CommonClass<T> extends AbstractClass<T>{
public Class<?> getPersistentClass(){
// how to get the persistent class of generic T
// T.class
return // T.class
}
}
服务
public class CommonService{
@Autowired
private CommonAbstractClass<Person> commonClass;
public void invoke(){
commonClass.invokeNothing();
}
}
如何获取类通用的持久类参数?在我的类CommonClass中的方法getPersistentClass();
请帮助我谢谢......
答案 0 :(得分:0)
实际上,由于type erasure导致获得泛型类型参数的运行时类型,因此没有办法(至少没有简单的方法我知道除了某些情况下的反射)。您可以使用以下安全解决方法:
public class CommonClass<T>{
private final Class<T> type;
public CommonClass(Class<T> type) {
this.type = type;
}
public Class<T> getMyType() {
return this.type;
}
}
但您可能需要将其实例化为:
CommonClass<Person> cp = new CommonClass<Person>(Person.class);
如果你使用的是Spring,你会发现这个answer很有用。