完整的代码将:/**
* Get the method name for a depth in call stack.
* Utility function
* @param depth depth in the call stack (0 means current method, 1 means call method, ...)
* @return method name
*/public static String getMethodName(final int depth){
final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
//System. out.println(ste[ste.length-depth].getClassName()+"#"+ste[ste.length-depth].getMethodName());
// return ste[ste.length - depth].getMethodName(); //Wrong, fails for depth = 0
return ste[ste.length - 1 - depth].getMethodName(); //Thank you Tom Tresansky}
青色评论:我使用JRE 6并给出了不正确的方法名。
如果我写ste[2 + depth].getMethodName().0是
getStackTrace(),
1是
getMethodName(int depth)和
2正在调用方法。
为了取回方法名,需要计算要应用的正确索引。