код получает меня в заблуждение:Имеет ли класс B, который реализует интерфейс I, который расширяет интерфейс J, также расширяет тип I?
Collection<? extends Map<String, String>> a =
new ArrayList<SortedMap<String, String>>();
SortedMap<String, String> b = new TreeMap<String, String>();
b.put("1","a");
Ошибка:
a.add(b);
Метод добавления (? Захвата # 2-оф расширяет карту) в тип коллекции> не применяется для аргументов (SortedMap) Почему? SortedMap расширяет Map и TreeMap - это класс, который реализует SortedMap.
Почему я не могу сказать? Каждый тип, который расширяет карту, будет действительным. – user710818
@ user710818 Это не то, что '? расширяет' средства. Он * не означает, что любой подкласс действителен, это означает, что подкласс не известен. См. Мой пример. –
понимать. Большое спасибо! – user710818