![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Допустим имеется подобный код
Выходит, что объект list в данном случае бесполезен? Или как тогда добавить в него содержание? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
А я вообще не понимаю смысла данной конструкции.
"? extends Object" подразумевает то, что вы будете общяться с содержимым на уровне интерфейса Object, и следовательно можно просто писать <Object> или в частном случае Object вообще не писать тут конечно возникнет другая ошибка "Incopatible types", но опять же если мы работаем на уровне Object, зачем нам сужать до String? Простите пожалуйста, если неправ за выше написанное, и по-моему с generics сильно заигрывать не стоит. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Platon, Это пример. Место object'а может использоваться любой класс или интерфейс, тогда смысл появляется
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Нет-нет. в том то и дело, что не появляется с Object равно как и с другими интерфейсами. Я же написал, что на уровне интерфейса Object.
Ну пусть будет на уровне интерфейса MouseListener, и что? все равно get будет возвращать не MyMouseListenerClass, а именно MouseListener (в смысле что работать после get'a тебе придется с ним через интерфейс MouseListener). Еще раз прошу прощения, что так яростно наступаю, но если я не буду высказывать своего мнения, то так и останусь с неправильными (если они неправильные) взглядами. |
|||
|
||||
| Ornitos |
|
||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.10.2007 Где: Непал Репутация: 2 Всего: 3 |
Никак. Объявление
говорит о том, что list -- список экземпляров Object или любого подкласса Object. Какие же экземпляры там могут храниться на самом деле точно не известно. На деле list может ссылаться как на List<String>, так и на List<Date> -- ничего не мешает ни тому, ни другому. Если бы ты мог туда что-то положить, то не было бы никакой гарантии, что ты не нарушишь контракт коллекции, не положишь дату к строкам. Добавлено @ 22:05
Поясню на примере -- сразу будет понятно. Пусть у тебя есть некоторая иерархия классов: базовый класс Music и два наследника Punk и Jazz.
Тебе нужен метод, который может обрабатывать коллекции объектов Music и его наследников. Ты НЕ можешь объявить его так:
Т.к. тогда не скомпилируется
Объявляешь метод так:
и у тебя всё работает. Это сообщение отредактировал(а) Ornitos - 13.10.2007, 22:07 |
||||||||||||
|
|||||||||||||
| Platon |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Хм, тогда и у меня появляется вопрос к Ornitos, мы вернулись к тому, с чего начали.
ведь такой код не работает
Добавлено через 2 минуты и 20 секунд На самом деле, мне кажется, что тут использование generics неуместно. |
||||||
|
|||||||
| Ornitos |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 13.10.2007 Где: Непал Репутация: 2 Всего: 3 |
||||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Вашему вниманию решил представить выход из такой щепетильной ситуации
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
С таким же успехом можно отказаться от генериков и подавить ворнинги. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Platon, По правде говоря плохо понимаю как можно использовать код "выхода из щепетильной ситуации" ...
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]()
|
| Правила форума "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. |