Вставка в Java Class Methods (без интерфейсов)

Я хотел бы вставить между методами класса для динамического расширения объекта.

Я уже знаю о материале java.lang.reflect.Proxy, но он слишком ограничен для реального вставления.

От использования java.lang.reflect.Proxy для вставки в методы класса Java первое ограничение:

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

И самое худшее:

(...) метод должен быть определен в интерфейсе, который реализуется проксируемым объектом. Его нельзя вызвать через экземпляр класса, который не реализует интерфейс.

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

Я знаю, что это довольно просто в Python & C, и в приведенной выше статье говорится, что это возможно:

Следующая статья этой серии проиллюстрирует некоторые методы преодоления этих ограничений.

К сожалению, я не могу найти эту статью.

1 ответ

Решение

Попробуйте использовать CGLIB:

Вот учебник, который я написал пару лет назад, это довольно простое введение в CGLIB: введение в CGLIB

Если вам нужно еще больше энергии, подумайте об использовании AspectJ

Надеюсь это поможет

Другие вопросы по тегам