Java Generic Innego rodzaju

Mam interfejs:

interface Identifable<T extends Serializable> {
      T getID();
}

i klasa, która to implementuje:

public class Cat implements Identifable<Long> {
       public Long getID(){...};
}

wszystko dziala. jak dotąd. Teraz chcę utworzyć GenericDAO, dlaczego nie mogę tego utworzyć ?:

public abstract GenericDAO<T extends Identifable<S>> {
    T getByID(S id);
}

Mogę tylko zadeklarować moje GenericDAO, ponieważ:

public abstract GenericDAO<T extends Identifable, S> {
  T getById(S id);
}

I pełna klasa:

public CatDAO extends GenericDAO<Cat, Long> {
      Cat getById(Long id);
}

Ale myślę, że to bezużyteczne, ponieważ powtarzam informacje. Już zadeklarowałem, że Cat implementuje Identifable <Long>, więc dlaczego muszę zadeklarować GenericDAO <Cat, Long>, a nie tylko GenericDAO <Cat>?

questionAnswers(2)

yourAnswerToTheQuestion