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>?