Список <? расширяет MyType>

Установите флаги в уведомлениях.флаги вместо уведомлений.дефультов.

Пример:

notification.flags |= Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
39
задан Tom Hawtin - tackline 17 April 2013 в 12:55
поделиться

3 ответа

Вы не можете выполнить "пут" с расширениями. См. Общие правила - правило получения и размещения .

32
ответ дан 27 November 2019 в 02:36
поделиться

Обратите внимание:

class MySubType extends MyType {
}

List<MySubType> subtypeList = new ArrayList<MySubType>();
List<? extends MyType> list = subtypeList;
list.add(new MyType());
MySubType sub = subtypeList.get(0);

sub теперь содержит MyType , что очень неверно.

26
ответ дан 27 November 2019 в 02:36
поделиться

Вам не нужно использовать синтаксис захвата подстановочных знаков в вашем случае, достаточно просто объявить

List<MyType> listOfMytype;

. Если вы хотите точно знать, почему, то Учебное пособие по Java Generics содержит больше, чем вы когда-либо хотели бы знать об эзотерическом безумии Java Generics. Страница 20 относится к вашему конкретному случаю.

Что касается того, почему добавление с захватом подстановочных знаков не работает, это потому, что компилятор не может точно определить, какой подкласс MyType будет в списке в каждом случае, поэтому компилятор выдает ошибку .

6
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: