Byte Buddy: преобразование объекта класса из одного загрузчика классов в тот же класс, загруженный в другой загрузчик классов - PullRequest
0 голосов
/ 21 марта 2019

Я исследую, является ли Byte Buddy правильным инструментом для меня.Я смотрел на этот ответ , который говорит о том, как с Byte Buddy можно взять класс Foo, загруженный загрузчиком классов A, переименовать его в Bar и переопределить его в другом загрузчике классов B.Это невероятно.Мой вопрос:

  1. Возможно ли иметь объект, который был создан из Foo в загрузчике классов A, и преобразовать в Bar объект, поступающий из классазагрузчик B?Решение, которое я имею в виду сейчас, состоит в том, чтобы в основном сериализовать объект из Foo, а затем отредактировать сериализованные байты, чтобы переименовать имя класса.Было бы хорошо, если бы я мог сделать это безопасно с Байтом Бадди.Другим решением было бы использовать Transloader .

  2. Является ли java-агент или какой-либо специальный инструментарий, необходимый для выполнения всего, что было описано в приведенном выше SO ответ

Большое вам спасибо.

1 Ответ

1 голос
/ 22 марта 2019

Вы всегда можете загрузить класс в другой загрузчик классов без использования агента Java.Что касается перевода класса, замена символа одного имени класса на пыльник не должна быть проблемой, но вам нужно следить за UID серийной версии, в которой может присутствовать имя класса.Byte Buddy - это библиотека генерации кода, которая не добавляет никакой дополнительной помощи для таких операций.

...