我有一个ArtistEntityBean
扩展GenericEntityBean
:
public class ArtistEntityBean extends GenericEntityBean<Artist> {
public ArtistEntityBean() {
item = new Artist();
}
}
-
public abstract class GenericEntityBean<T extends IntEntity> implements Serializable {
protected T item;
public void init(Integer id){
item.setId(id);
}
}
-
public class Artist extends ArtistBaseEntity implements Comparable<Artist> {
...
}
-
public abstract class ArtistBaseEntity implements IntEntity {
...
}
-
public interface IntEntity {
Integer getId();
void setId(Integer id);
}
-
我试图在GenericEntityBean
类中添加尽可能多的代码,这就是为什么我想使用接口以便能够设置id
的{ {1}}。
这不是很难,因为我在item
的构造函数中得到NoSuchFieldError
并且我不知道为什么?
答案 0 :(得分:3)
如果item
为public
,protected
或默认您必须使用
super.item = new Artist();
在ArtistEntityBean
的构造函数中。
如果是private
,则必须在抽象类中提供setter方法。
编辑:如果您未在摘要类中指定item
,请执行以下操作
public abstract class GenericEntityBean<T extends IntEntity> implements Serializable {
protected T item;
public void init(Integer id){
item.setId(id);
}
}