我这里有一个仍然无法解决的问题,问题是我有这个抽象类:

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;反正也不是没有演员。

10-06 13:34