Я не понимаю. В Java я могу объявить интерфейс как тип возврата метода, например:
public List<String> get(){
return new ArrayList<String>();
}
если у меня теперь есть интерфейс, скажем, I
и класс C
, реализующий его, почему я не могу определить так:
public List<I> get(){
return new ArrayList<C>();
}
Я знаю решение для создания ArrayList<I>
и добавления к нему C
, но мне интересно, почему мне не разрешено объявлять его, как показано выше. Я думал, что каждый C
также является I
, хотя это не должно быть проблемой.