Определить, является ли метод в инструкции вызова родным или нет в байт-коде ASM/java.

Есть ли способ узнать, является ли метод в инструкции вызова в байт-коде собственным методом или нет? Я ищу конкретное решение ASM.

visitMethodInsn(int opcode, String owner, String name, String desc)), похоже, не предоставляет эту информацию. Если это так, что я упускаю? ИЛИ есть ли другой способ подтвердить, является ли выполняемый метод родным или нет?

Я знаю, что вы можете сделать это, когда вы посещаете метод с visitMethod(int access, String name, String desc, String signature, String[] exceptions) в классе ClassVisitor, используя параметр int access. Но я заинтересован в получении этой информации на сайтах вызовов метода.

Я использую ASM Core API.

Это инструментарий для Java-программ, которые я пишу с использованием ASM.


person vijay    schedule 23.04.2013    source источник


Ответы (1)


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

person user207421    schedule 23.04.2013
comment
На самом деле метод, который вы вызываете, может даже не существовать до времени выполнения благодаря таким вещам, как динамика и пользовательские загрузчики классов. - person Antimony; 24.04.2013