Java-Generikum eines anderen Generikums
Ich habe Schnittstelle:
interface Identifable<T extends Serializable> {
T getID();
}
und Klasse, die dies implementiert:
public class Cat implements Identifable<Long> {
public Long getID(){...};
}
alles funktioniert gut bisher. Jetzt möchte ich GenericDAO erstellen. Warum kann ich das nicht erstellen ?:
public abstract GenericDAO<T extends Identifable<S>> {
T getByID(S id);
}
Ich kann mein GenericDAO nur wie folgt deklarieren:
public abstract GenericDAO<T extends Identifable, S> {
T getById(S id);
}
Und komplette Klasse:
public CatDAO extends GenericDAO<Cat, Long> {
Cat getById(Long id);
}
Aber ich denke, es ist nutzlos, weil ich Informationen wiederhole. Ich habe bereits erklärt, dass Cat Identifable <Long> implementiert. Warum muss ich also GenericDAO <Cat, Long> und nicht nur GenericDAO <Cat> deklarieren?