Я пытаюсь получить некоторую информацию о времени выполнения, чтобы выполнить некоторую отладку. Есть ли способ получить доступ к параметрам, фактически переданным методу?Как получить значения параметров вызываемого метода в java?
Я знаю вызывающий класс и метод, но не параметры и их значение во время выполнения. Любые идеи, как это решить? Заранее спасибо.
Мой код до сих пор:
//get the class I wanna know something about out of the call history
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
String callerMethod = stacktrace[2].getMethodName();
//load the class to get the information
Class<?> c = Class.forName(stacktrace[2].getClassName());
Method[] methods = c.getMethods();
Class<?>[] parameters = methods[1].getParameterTypes();
//get the parameter data
(parameters[y].isArray()? parameters[y].getComponentType() : parameters[y]).getName();
//TODO: how about the parameter value at runtime?
Код должен быть общим для всех классов я реализую. Пример использования:
public class doClass() {
public void doSomething(Object o) {
//here comes my debug line
magicDebugger(level);
}
}
level
является переключатель/триггер, чтобы активировать консоль/дб/файл/выход почты или что-то некоторой информации
Я ожидаю, что следующий вывод (может быть, есть некоторые System.out.println в класс magicDebugger):
[debug] caller: com.company.package.doClass.doSomething(Object o); value of o at runtime = java.lang.String "test"
вы можете использовать аспекты, чтобы справиться с этим или отладки коды в ecllipse как редактор – Tenacious
Он должен быть с помощью консоли отладки. Я не могу использовать eclipse для этого. – Ben