Динамический доступ к аргументам метода в Java 7 - PullRequest
0 голосов
/ 08 июля 2011

Возможно ли получить значения аргументов метода во время выполнения в Java 7 без использования явных инструментов манипулирования байт-кодом и других платформ?

Мне это нужно для моей среды ведения журналов javassist.

public void foo(String arg1, String arg2){
  //injected code
  Object[] args;
  args = ???;//get arg1 and arg2 values in current method context
  Logger.logMethodArgs(args);
  //end of injected code
  ...
}

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

http://paranamer.codehaus.org дает вам имена параметров.Это еще одна основа, хотя.Я использую плагин 'shade' для Maven, чтобы перетащить классы в то, что я создаю, чтобы не было переходных зависимостей для конечных пользователей.

1 голос
/ 11 июля 2011

По сути, на уровне такого уровня ничего не изменилось, единственные изменения уровня языка - в монетах проекта.

Конечно, в приведенном выше коде вы можете изменить String arg1, String arg2 на String ... args, но это не работает с аргументами разных типов. Другим способом решения этой проблемы является использование вашей IDE (например, Eclipse) информации в AST (абстрактном синтаксическом дереве) для генерации операторов регистрации. Любая разбор IDE должен быть в состоянии получить это право. Если вы используете текстовый редактор, то от программиста может потребоваться сделать больше и самому перебирать количество аргументов.

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