![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
Дано:
Почему нельзя так писать: list.add("Foo"); //compilation fails |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Если я правильно помню шаблонизацию пятой жабы, то это потому что компилятор не знает, какой именно тип объектов у тебя в листе и не может гарантировать, что есть возможность создать объект твоего типа на основе String.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
nornad, возможно. только list.add(null); проходит
|
|||
|
||||
| JUncle |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
В такой шаблонизации со String нет никакого смысла.
String напрямую наследуется от Object и объявлен фнальным. Потомков у него быть не может. Поэтому видоизменим:
Вот так у меня прокатило:
Это сообщение отредактировал(а) JUncle - 26.3.2007, 22:24 --------------------
class JUncle extends Man // singleton{/*...*/} |
||||
|
|||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
JUncle, так extends, a не super, рассматривается
Это сообщение отредактировал(а) Entry_N3 - 26.3.2007, 22:31 |
|||
|
||||
| JUncle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
Entry_N3, это то да, но почему то работает в приведенном мной примере как extends.
Сам не понимаю(. Вот - почитай, там вроде бы есть ответы: http://forum.juga.ru/showthread.php?postid=53732 --------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
JUncle, да, я тоже проверил, что твой пример не работает с extends, хотя его работа "как есть" противоречит обсуждению super по ссылке http://forum.vingrad.ru/topic-142837.html
Это сообщение отредактировал(а) Entry_N3 - 26.3.2007, 22:44 |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Подозреваю, что null вообще не проблема хранить в коллекции, т.к. ему неведом тип в принципе. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
nornad,
|
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
Вот ответ: "When using a wildcard, List<? extends Type>, the collection can be accessed but not modified."
Добавлено через 1 минуту и 49 секунд Добавление и получение элемента неизвестного типа - компилятор не имеет информации о типе, поэтому запрещает все, кроме null ArrayList<?> a1 = new ArrayList<Number>(10); a1.add(null); Object o = a1.get(0); |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |