AFAIK, мої класи extendsбатьківських класів та implementsінтерфейси. Але я натрапив на ситуацію, коли я не можу використовувати implements SomeInterface. Це декларування родових типів. Наприклад:
public interface CallsForGrow {...}
public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work!
extends ArrayList<T>
Тут використання implementsсинтаксично заборонено. Я подумав спочатку, що використання інтерфейсу всередині <> взагалі заборонено, але ні. Це можливо, я повинен використовувати тільки extendsзамість implements. Як результат, я "розширюю" інтерфейс. Ще один приклад працює:
public interface CallsForGrow {...}
public class GrowingArrayList <T extends CallsForGrow> // this works!
extends ArrayList<T>
Мені це здається синтаксичною непослідовністю. Але, можливо, я не розумію деяких видів Java 6? Чи є інші місця, де мені слід розширити інтерфейси? Чи повинен інтерфейс, який я маю на увазі розширити, мати якісь особливості?