Добавление новой функциональности в нерасширяемый класс Java - PullRequest
1 голос
/ 28 ноября 2011

Это способ добавить новую функциональность к классу, который нельзя расширять, например, (конечный класс) в Java, я знаю способ добавить свойство к нему, используя HashMap. Например, если у меня есть Widget класс, который объявил final, и я хочу добавить новое свойство к нему, скажем «серийный код», тогда я могу HashMap добавить его следующим образом

serialHashMap.put(widgetObject,serialNumber);

так есть ли способ добавить новые функции в финальный класс, какие-либо предложения ??? спасибо

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011

Это ничего не добавляет к рассматриваемому объекту; он принимает разумный hashCode / equals, и связывает данные с объектом.

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

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

(я игнорирую такие вещи, как добавление интерфейсов с помощью манипуляций с байт-кодом, прокси и т. Д.)

0 голосов
/ 28 ноября 2011

Не знаете точно, какой тип функциональности вы хотите добавить, но можете ли вы использовать шаблон "typeclass"? Компаратор является примером: http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...