我試圖得到一些運行時信息做一些調試。有沒有辦法訪問實際傳遞給方法的參數?如何獲得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"
你可以用方面來處理它,或者你調試你的代碼編輯器一樣 – Tenacious
它必須通過控制檯調試的ecllipse。我不能使用eclipse來做到這一點。 – Ben