我試圖創建一個「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中?或者,這個想法有什麼不對嗎?是否認爲這是一個可接受的設計選擇?
(我可能會放棄它的第一件事,明天,因爲它可能是太難以概括了很多的行爲,但此刻我很好奇它如何可以做到的。
對於泛型類和接口,在'public'之後不需要聲明''。只需使用'public interface ICrudManager {'。 –
rgettman
2013-05-07 17:16:49
謝謝@rgettman,已編輯帖子 – sanbhat 2013-05-07 17:35:42
接口中聲明的方法自動爲「public」。在接口中聲明的變量自動爲'public static final'。 – 2013-05-07 18:24:17