Как получить значение из каждого поля класса с помощью Byte Buddy? - PullRequest
0 голосов
/ 19 февраля 2019

Я пишу библиотеку, которая использует Java-агенты с Byte Buddy для генерации кода во время выполнения.Мне нужно создать выражение, чтобы получить значение из каждого поля класса.

Как создать выражение для доступа к значению поля?В настоящее время я изучаю API FieldDescription, но ничего не нашел для этого.

1 Ответ

0 голосов
/ 24 февраля 2019

Исходя из дополнительной информации, которую вы предоставили на GitHub, вы подойдете следующим образом:

Чтобы создать StringBuilder, вы звоните MethodCall.construct(StringBuilder.class.getConstructor())

Затем вы можете вызвать приложениек строителю строк, например: MethodCall.invoke(StringBuilder.class.getMethod("append", Object.class)).onMethodCall(...).withField(...), где вы начинаете с начального строителя строк, а затем повторяете для каждого поля или константы, предоставляя последний вход для следующего экземпляра.

Вы должны будете настроить метод на основеТип поля, если тип является примитивным, чтобы это работало.В конце концов, вы должны выполнить последний вызов метода для toString.

...