作成した抽象スーパークラスを拡張するオブジェクトのデータベース操作を実行する「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 を拡張する 2 つのクラスができました。これらのクラスは、私のビジネス エンティティを表してい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で可能ですか?または、このアイデアに何か問題がありますか / それは受け入れられる設計上の選択だと思いますか?
(多くの動作を一般化するのは難しすぎるかもしれないので、明日は最初にそれを放棄するかもしれませんが、現時点ではどのようにそれを行うことができるのか興味があります.