Является ли java.util.Observable используемым где угодно?

Поболтал с коллегой о дизайне Javas-библиотек. Я упомянул, что мне всегда было смешно, что классы AWT/Swing, которые по сути обеспечивают интерфейс Observable в виджетах пользовательского интерфейса, на самом деле называются "слушателями".

Затем он наполнил меня, указав, что было бы имя столкновения с java.util.Observer и java.util.Observable, которые были вокруг с JDK 1.0. Я никогда не слышал о них раньше.

В JavaDocs нет обычаев, а google/googlecode не так много, поэтому кто-нибудь знает, если они используются где-то в JDK? Кажется, они не получили никакой общей любви, поэтому, по-видимому, они не "популярны". Кто-нибудь нашел их полезными?

Ответ 1

Observer и Observable по-прежнему используются во множестве кода мастера Eclipse для определения того, когда материал в коробках ввода изменяется, поэтому сам мастер может быть обновлен. Мне приходилось работать с некоторыми из этого материала, меняя его для собственных нужд..:)

Ответ 2

Они не используются, потому что их дизайн ошибочен: они не типа safe. Вы можете присоединить любой объект, который реализует Observer для любого Наблюдаемого, что может привести к незначительным ошибкам по линии.

Объединять их в безопасном интерфейсе типа примерно такая же работа, как реализация шаблона с нуля, поэтому я предполагаю, что последнее предпочтительнее в большинстве случаев.

Это одна из вещей, которые ошибочны в Java 1.0 из-за субоптимальных вариантов дизайна, сделанных под временным давлением (другие включают API Java 1.0 Collection API и java.util.Date), но из-за природы публичных API никогда не может (только устаревшие).