AFAIK, moje klasy klasy extends
nadrzędne i implements
interfejsy. Ale natrafiam na sytuację, w której nie mogę użyć implements SomeInterface
. Jest to deklaracja typów ogólnych. Na przykład:
public interface CallsForGrow {...}
public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work!
extends ArrayList<T>
Tutaj używanie implements
jest składniowo zabronione. Najpierw pomyślałem, że używanie interfejsu wewnątrz <> jest w ogóle zabronione, ale nie. Jest to możliwe, muszę tylko użyć extends
zamiast implements
. W rezultacie „rozszerzam” interfejs. Ten kolejny przykład działa:
public interface CallsForGrow {...}
public class GrowingArrayList <T extends CallsForGrow> // this works!
extends ArrayList<T>
Wydaje mi się, że jest to niespójność składniowa. Ale może nie rozumiem niektórych zalet Javy 6? Czy są inne miejsca, w których powinienem rozszerzyć interfejsy? Czy interfejs, który mam rozszerzyć, powinien mieć jakieś specjalne funkcje?