Java genérico de otro genérico
Tengo interfaz:
interface Identifable<T extends Serializable> {
T getID();
}
y la clase que implementa esto:
public class Cat implements Identifable<Long> {
public Long getID(){...};
}
todo funciona bien hasta aquí. Ahora quiero crear GenericDAO, ¿por qué no puedo crear esto ?:
public abstract GenericDAO<T extends Identifable<S>> {
T getByID(S id);
}
Solo puedo declarar mi GenericDAO como esto:
public abstract GenericDAO<T extends Identifable, S> {
T getById(S id);
}
Y completar la clase:
public CatDAO extends GenericDAO<Cat, Long> {
Cat getById(Long id);
}
Pero creo que es inútil, porque repito información. Ya declaré que Cat implementa Identifable <Long>, ¿por qué debo declarar GenericDAO <Cat, Long>, no solo GenericDAO <Cat>?