в настоящее время я пытаюсь реализовать типизированный универсальный DAO .
Я даже не могу ничего скомпилировать, поскольку NetBeans жалуется на UserDAOHibernate
интерфейс ожидается здесь
аргумент типа Пользователь находится за пределами переменной типа ENTITY
Боюсь, что в использовании наследования / интерфейсов есть какая-то очевидная ошибка, поскольку я довольно новичок в 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 или наследованием?
Является ли этот многоуровневый подход плохим примером для подражания? Все мои сущности нуждаются в идентификаторе, и эта реализация может быть легко использована позже с разными типами идентификаторов, поэтому я подумал, что мог бы использовать его.