У меня есть вопрос Java о дженериках. Я объявил общий список:Список <? extends MyType>
List<? extends MyType> listOfMyType;
Тогда в некотором методе я пытаюсь создать экземпляр и добавлять элементы в этот список:
listOfMyType = new ArrayList<MyType>();
listOfMyType.add(myTypeInstance);
Где myTypeInstance
только объект типа MyType
; он не будет компилироваться. Он говорит:
Метод дополнение (? Захват # 3-оф расширяет MyType) в списке Типа < захвата # 3-в ? extends MyType> не применимо для аргументов (MyType)
Любая идея?
Как говорит Джош Блох: "Помните, PECS: Производитель Расширяет, Consumer Super." Поскольку listOfMyType является потребителем (вы добавляете к нему), 'super' является допустимым, а' extends' - нет. –
Ссылки сейчас сломаны. –
Точка педантизма: вы можете 'put'' null' с расширением ".Также вы можете захватить тип и «поставить» ссылки, которые вы получили ранее ». –