我正在尝试创建一个“CRUD 管理器”类,对扩展我创建的抽象父类(super class)的对象执行数据库操作。抽象类相当简单:
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
我想我应该尝试创建一个支持其公共(public)父类(super class)的公共(public) 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中可以吗?或者,这个想法有什么问题吗/认为这是一个可以接受的设计选择吗?
(明天我可能会首先放弃它,因为概括很多行为可能太困难,但目前我很好奇如何做到这一点。
最佳答案
public interface ICrudManager<T extends IndexedEntity> {
public void add(T e);
public IndexedEntity get(long id);
public void update(T e);
public void delete(T e);
public List<T> getAll();
}
并且您可以创建类似 ICrudManager<Car> carManager = new CrudManagerImpl<Car>();
的对象
关于java - 创建一个泛型类,其类型参数仅限于某个父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420796/