Интересно, есть ли в Java особая причина для использования всегда «extends
», а не «implements
» для определения границ типовых параметров.Java generics - почему разрешено «extends T», но не «реализует T»?
Пример:
public interface C {}
public class A<B implements C>{}
запрещено, но
public class A<B extends C>{}
является правильным. В чем причина этого?
Пожалуйста, отметьте ответ Tetsujin no Oni как правильный. – KomodoDave
Я не знаю, почему люди думают, что ответ Тетсуджина нет Oni действительно отвечает на вопрос. Он в основном перефразирует наблюдения ОП, используя академическую формулировку, но не дает никаких аргументов. «Почему нет« инструментов »?» - «Потому что есть только« extends ». – ThomasR
ThomasR: это потому, что речь идет не о «разрешенном», а о значении: нет никакой разницы в том, как вы пишете общий потребляющий тип с ограничением, связано ли ограничение с интерфейсом или типом предка. –