Java genérico de outro genérico
Tenho interface:
interface Identifable<T extends Serializable> {
T getID();
}
e classe que implementa isso:
public class Cat implements Identifable<Long> {
public Long getID(){...};
}
tudo funciona bem. tão longe. Agora eu quero criar GenericDAO, porque eu não posso criar isso:
public abstract GenericDAO<T extends Identifable<S>> {
T getByID(S id);
}
Eu só posso declarar meu GenericDAO como este:
public abstract GenericDAO<T extends Identifable, S> {
T getById(S id);
}
E classe completa:
public CatDAO extends GenericDAO<Cat, Long> {
Cat getById(Long id);
}
Mas acho inútil, porque repito informação. Eu já declarei que Cat implementa Identifable <Long>, então por que devo declarar GenericDAO <Cat, Long>, não apenas GenericDAO <Cat>?