Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему FocusAdapter абстрактный класс? 
:(
    Опции темы
Royan
Дата 13.5.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 1
Всего: 15



Я не могу понять, что с ним не так, что он стал абстрактным:
Цитата
public abstract class FocusAdapter
extends Object
implements FocusListener

http://java.sun.com/j2se/1.4.2/docs/api/ja...cusAdapter.html
В моем понимании абстрактным классом называется тот класс, объект которого, нельзя получить. То есть что-то препятствует тому, чтобы из класса получился объект. Здесь же есть два метода, оба заимплементированы. Так почему он абстрактный?


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
batigoal
Дата 13.5.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Гм... Действительно, абстрактный... Фигня какая-то. Два имплементированных метода, наследуется от Object...
Адаптер не должен быть абстрактным, это противоречит его основному назначению - пустой реализации интерфейсов.

Может, баг?..
Добавлено @ 17:40

Посмотрел - оказывается, все адаптеры абстрактны... Зачем это?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 13.5.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 1
Всего: 144



Идея адаптеров обработчиков оконных событий возникла вот каким образом. Что такое листенер - надеюсь, объяснять не надо? Так вот, листенеры определены в виде интерфейсов; каждый тип листенера объявляет ряд характерных для этого типа методов для реакции на определенные события. У некоторых листенеров таких методов меньше, у других - больше. Например, у MouseListener их пять, у WindowListener - семь, и т. д.

Но тебе, допустим, не нужно слушать все WindowEvent'ы: тебя интересует только windowClosing(WindowEvent e). Но поскольку интерфейс листенера - общий для всех слушателей WindowEvent, то тебе таки придется имплементировать его весь, и потом долго заниматься мартышкиным трудом: писать заглушки (пустые методы) для тех методов, которые тебя не интересуют.

Так вот, товарищи из Sun'а весь этот мартышкин труд за тебя уже проделали - написали абстрактные классы, состоящие из пустых определений методов, и назвали их адаптерами. Так что тебе только остается унаследовать от нужного тебе адаптера и переопределить интересующий тебя метод.

А аббстрактными они объявлены для того, чтобы ты ненароком или по незнанию не смог их инстанциировать - потому что это явно не то. чего ты хочешь добиться smile


PM WWW   Вверх
batigoal
Дата 13.5.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Мне кажется, что все немного проще - создать адаптер, и не переопределить ни одного метода - бессмысленно. Поэтому и объявили его abstract, хотя у него есть все, чтобы быть обычным классом.

То же самое, что сказал Stampede, только покороче smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 13.5.2005, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 1
Всего: 144



Цитата(Lamer @ 13.5.2005, 17:59)
То же самое, что сказал Stampede, только покороче


Нет, не то же самое. Ты неправильно толкуешь значение слова адаптер. Ты думаешь, что адаптер - это и есть обработчик события. Нет, обработчик события в терминологии AWT (и не только) - это handler.

А адаптер - он именно адаптер: переходник, приспособа, согласователь. Как, например, DC блок питания или видеокассета-переходник, в которую можно засовывать маленькую кассету от камеры.

Метафора особенно заметная, и ты испытываешь благодарность за ее существование, когда в потоке кодирования объявляешь анонимный класс, и тебе достаточно переопределить один-два метода и все, ты уже идешь дальше.

Так штааа... smile

PM WWW   Вверх
batigoal
Дата 13.5.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(Stampede @ 13.5.2005, 20:04)
ы думаешь, что адаптер - это и есть обработчик события.

А разве нет? Мы же регистрируем его именно как класс-обработчик.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 13.5.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(Lamer @ 13.5.2005, 12:04)
А разве нет? Мы же регистрируем его именно как класс-обработчик.

Не его, а класс, который от него наследует.




--------------------

PM   Вверх
batigoal
Дата 13.5.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Ну да, просто лень было писать. smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 13.5.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 1
Всего: 144



Цитата(Lamer @ 13.5.2005, 21:04)
А разве нет? Мы же регистрируем его именно как класс-обработчик.


На уровне абстракций, каковыми являются высокоуровневые понятия Listener (интерфейс), Handler (наша конкретная реализация слушателя == обработчик) и Adapter (вспомогательный класс-посредник), в семантическом плане мы делаем следующее:

регистрируем наш Handler в качестве Listener'а некоего гуйного объекта, используя (исключительно удобства ради) переходник Adapter соответствующего типа.

Все, Lamer George, пожалуйста, больше с этим вопросом ко мне не лезь, а то я разочаруюсь в твоих перцептивных способностях. Шутка ли, три раза подряд объяснить одно и то же разными словами. А если хочешь плюс поставить, то так просто и скажи smile

PM WWW   Вверх
Domestic Cat
Дата 13.5.2005, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Вообще по определению адаптер - это то, что преобразовывает интерфейс (класса или интерфейса). А какой он должен быть - абстрактный или конкретный - дело разработчика.


--------------------

PM   Вверх
batigoal
Дата 13.5.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(Stampede @ 13.5.2005, 22:24)
А если хочешь плюс поставить, то так просто и скажи

Не вопрос. По сумме нескольких постов заслужил. smile

Оффтоп: Понял я, что мы друг друга не поймем


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Stampede
Дата 13.5.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 1
Всего: 144



Цитата(Lamer @ 13.5.2005, 21:29)
Оффтоп: Понял я, что мы друг друга не поймем


Ты здравый чувак, я здравый чувак - поймем smile Только вот в чем мне тебя понимать? У тебя же по данному вопросу нет внятной позиции. Изложи свою точку зрения, а я покажу, в чем ты заблуждаешься.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
batigoal
Дата 14.5.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Вот в этой части:
Цитата(Stampede @ 13.5.2005, 20:04)
Ты неправильно толкуешь значение слова адаптер. Ты думаешь, что адаптер - это и есть обработчик события. Нет, обработчик события в терминологии AWT (и не только) - это handler.

Я думаю, что В ДАННОМ СЛУЧАЕ класс, расширяющий адаптер, как раз и является handler'ом.
Но я уже понял твою мысль, так что можешь дальше не разжевывать.

Это сообщение отредактировал(а) Lamer George - 14.5.2005, 14:07


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.