Joe*_*ore 1 java generics inheritance
我这里有一个问题仍然无法解决,问题是我有这个抽象类:
public abstract class AbstractBean<T> {
private Class<T> entityClass;
public AbstractBean(Class<T> entityClass) {
this.entityClass = entityClass;
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个继承这个抽象的类:
@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.
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何让它工作?,我试图让BasicUserBean类继承,所以如果我有继承BasicUserBean的类PersonBean,那么我可以在Generic中设置实体Person,它也继承了实体BasicUser.它最终会成为:
@Stateless
@LocalBean
public class PersonBean extends BasicUserBean<Person> {
public PersonBean() {
super(Person.class);
}
...
}
Run Code Online (Sandbox Code Playgroud)
我只想继承BasicUserBean到所有后代的基本功能,所以我不必在所有后代中重复相同的代码.谢谢!.
你需要添加构造函数来BasicUserBean
获取Class<T>
public BasicUserBean(Class<T> entityClass) {
super(entityClass);
}
Run Code Online (Sandbox Code Playgroud)
你的无参数构造函数将无法工作,因为你扩展的类需要一个T
.你不能有一个T
在构造函数中没有考虑在T
作为参数; 反正不是没有演员.