當前我試圖執行a typed generic DAO。鍵入的通用DAO和實體
我都不去編譯任何東西,因爲NetBeans的抱怨UserDAOHibernate
接口這裏有望
類型參數的用戶不是類型可變實體
我範圍內害怕我如何使用繼承/接口存在一些明顯的錯誤,因爲我對Java很陌生。
這裏的一些精簡代碼
public interface GenericEntity<ID extends Serializable> {
public abstract ID getId();
public abstract void setId(final ID id);
}
public abstract class LongEntity implements GenericEntity<Long> {
protected Long id;
public Long getId();
public void setId(final Long id);
}
public class User extends LongEntity implements Serializable {
private String name;
private String password;
private Customer customer;
}
public interface GenericDAO<ENTITY extends GenericEntity<ID>, ID extends Serializable> {
public abstract ENTITY findById(ID id);
public abstract List<ENTITY> findAll();
public abstract ENTITY makePersistent(ENTITY entity);
public abstract void makeTransient(ENTITY entity);
}
public abstract class GenericHibernateDAO<ENTITY extends GenericEntity<ID>, ID extends Serializable>
implements GenericDAO<ENTITY, ID> {
}
public class UserDAOHibernate implements GenericHibernateDAO<User, LongEntity> {
}
難道LongEntity
應該extend GenericEntity<Long>
?如果是這樣,我將如何用Java的單一級別或繼承來做到這一點?
這種分層方法是一個不好的例子嗎?我所有的實體都需要一個id,這個實現很容易在以後用不同的id類型重用,所以我想我可以使用它。
旁註:你沒有申報的接口方法的抽象(也沒有公開) - 它們隱含都是公共的和抽象的反正。 :) – Thomas
@Thomas謝謝。保存我另外幾個按鍵:) – user967058