Вы можете вставить только экземпляры T
в List<T>
.
Тип List<? extends Map<X,Y>>
обозначает список неизвестный тип T
, который extends Map<X,Y>
. Например, это может означать List<LinkedHashMap<X,Y>>
. Очевидно, что вы не можете вставить обычный HashMap<X,Y>
в такой список.
Вы, вероятно, хотите:
List<Map<String, Object[]>> currentList;
Или, если вы хотите быть по-настоящему гибким, вы можете сделать:
List<? super Map<String, Object[]>> currentList;
Что позволит вам делать сумасшедшие вещи вроде:
currentList = new ArrayList<Map<? super String, ? extends Object[]>>();
Вы также можете прочитать часто задаваемые вопросы об общих чертах Анжелики Лангер, в частности раздел о подстановочных знаках .