HotLog

пятница, 15 июля 2011 г.

Listeners Support (PropertyChangeSupport с произвольным типом листнеров)

Пусть у нас есть событие:


И слушатель:


Обычно, класс в который можно зарегистрировать слушатель выглядит как-то так:


Два метода fireEvent и fireChange мало того, что выглядят почти одинаково, так еще и имеют кучу таких же клонов в других классах. Повторяющийся код - это плохо. Хочется чего-то вроде этого:

Итог - минус полтора десятка строчек. Добиться этого можно с помощью java.lang.reflect.Proxy (предполагая, что Listener - это интерфейс).
Вот код решения:

И тест к нему:

Комментариев нет:

Отправить комментарий