我正在尝试创建一个“CRUD 管理器”类,对扩展我创建的抽象超类的对象执行数据库操作。抽象类相当简单:
public abstract class IndexedEntity() {
protected Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
if(id == null)
this.id = id;
else throw new UnsupportedOperationException
("The ID cannot be changed once it was set.");
}
}
现在我有几个扩展这个 IndexedEntity 的类,这些类代表我的业务实体:Car
、、、Customer
Lease
与其为每个业务实体创建一个 CRUD 管理器,我想我会尝试创建一个支持其通用超类的通用 CRUD 类。
如何创建一个泛型类,该类在构造时采用类型参数,并且该类型参数仅限于某些类型 - 那些从 IndexedEntity 继承的类型?
就像是:
public interface ICrudManager<IndexedEntity> {
public void add(IndexedEntity e);
public IndexedEntity get(long id);
public void update(IndexedEntity e);
public void delete(IndexedEntity e);
public List<IndexedEntity> getAll();
}
在Java中可能吗?或者,这个想法有什么问题/是否认为这是一个可以接受的设计选择?
(明天我可能会首先放弃它,因为概括很多行为可能太困难了,但目前我很好奇如何做到这一点。