Вставка в Java Class Methods (без интерфейсов)
Я хотел бы вставить между методами класса для динамического расширения объекта.
Я уже знаю о материале java.lang.reflect.Proxy, но он слишком ограничен для реального вставления.
От использования java.lang.reflect.Proxy для вставки в методы класса Java первое ограничение:
(...) метод должен вызываться через экземпляр прокси-класса. Так, например, вызовы вложенных методов не будут перехватываться.
И самое худшее:
(...) метод должен быть определен в интерфейсе, который реализуется проксируемым объектом. Его нельзя вызвать через экземпляр класса, который не реализует интерфейс.
Объект, который я хотел бы расширить во время выполнения, не реализует никакого интерфейса, и, что хуже всего, методы, которые мне нужно переопределить, являются вложенными и частными.
Я знаю, что это довольно просто в Python & C, и в приведенной выше статье говорится, что это возможно:
Следующая статья этой серии проиллюстрирует некоторые методы преодоления этих ограничений.
К сожалению, я не могу найти эту статью.
1 ответ
Попробуйте использовать CGLIB:
Вот учебник, который я написал пару лет назад, это довольно простое введение в CGLIB: введение в CGLIB
Если вам нужно еще больше энергии, подумайте об использовании AspectJ
Надеюсь это поможет