Как добавить новый метод в существующий класс, используя манипулирование байтовым кодом? - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно добавить новый (на самом деле, переопределить существующий унаследованный) метод в скомпилированный класс Java. Я могу изменить метод в суперклассе, используя Instrumentation (#retransformClasses()) и Javassist (#insertAfter()). К сожалению, это изменит поведение всех подклассов этого суперкласса, но я хочу, чтобы был изменен только один конкретный класс.

Я вижу, что Javaassist имеет #addMethod() функциональность (и она действительно работает), но как внедрить полученный байт-код в JVM?

Оба метода Java.Instrumentation #retransformClasses() и #redefineClasses() ясно говорят в javadocs:

... Переопределение не должно добавлять, удалять или переименовывать поля или методы ...

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