Java Generic из другого универсального

У меня есть интерфейс:

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

и класс, который реализует это:

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

все отлично работает до сих пор. Теперь я хочу создать GenericDAO, почему я не могу создать это ?:

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

Я могу только объявить мой GenericDAO следующим образом:

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

И полный класс:

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

Но я думаю, что это бесполезно, потому что я повторяю информацию. Я уже заявлял, что Cat реализует Identifable <Long>, так почему я должен объявлять GenericDAO <Cat, Long>, а не только GenericDAO <Cat>?

Ответы на вопрос(2)

Ваш ответ на вопрос