我这里有一个仍然无法解决的问题,问题是我有这个抽象类:
public abstract class AbstractBean<T> {
private Class<T> entityClass;
public AbstractBean(Class<T> entityClass) {
this.entityClass = entityClass;
}
...
}
现在,我有另一个继承此抽象的类:
@Stateless
@LocalBean
public class BasicUserBean<T extends BasicUser> extends AbstractBean<T> {
private Class<T> user;
public BasicUserBean() {
super(user); // Error: cannot reference user before supertype contructor has been called.
}
}
我的问题是如何使它正常工作?我正在尝试使BasicUserBean类可继承,因此,如果我有继承BasicUserBean的PersonBean类,则可以在Generic中设置也继承实体BasicUser的Person实体。最终将是:
@Stateless
@LocalBean
public class PersonBean extends BasicUserBean<Person> {
public PersonBean() {
super(Person.class);
}
...
}
我只想从BasicUserBean继承所有子代的基本功能,所以不必在所有子代中重复相同的代码。谢谢!。
最佳答案
您需要使用BasicUserBean
将构造函数添加到Class<T>
public BasicUserBean(Class<T> entityClass) {
super(entityClass);
}
您的无参数构造函数将无法工作,因为您要扩展的类需要一个
T
。如果不使用T
作为参数,则构造函数中不能包含T
;反正也不是没有演员。