Для получения фактического значения вам необходимо выполнить или интерпретировать байт-код. Для того, чтобы изменить то, что метод возвращает, последние две команды в методе должны быть:
xload_#
xreturn
где х типа
examples:
//returning an object
aload
areturn
//returning an int
iload
ireturn
и # является индекс переменной в текущем кадре
методы, которые вы можете захотеть взглянуть на это visitBasicVarInstruction/visitVarInstruction (для команды загрузки) visitBasicInstruction (для возвращенной инструкции)
Если вы ш ant, чтобы идти по маршруту выполнения. В ASM вы можете создать класс заглушки, который содержит только метод, который вы хотите выполнить, и поля локального класса, которые ссылаются на метод. Затем, используя ClassWriter, зайдите в созданный вами класс заглушки и напишите его в файл, в который будут загружены байты.
Затем используйте URLClassLoader для загрузки этого файла в jvm, создайте экземпляр этого объекта и вызовите метод через отражение (если вы хотите создать класс во время выполнения); или запишите файл и включите в свой путь сборки, чтобы использовать его во время программирования.
Вариант исполнения ОСОБЕННО упрощен, но это выполнимо (программное обеспечение, которое я пишу, пишет сейчас). Надеюсь, я смогу открыть его или, по крайней мере, выпустить двоичные файлы публично.