我正在 android 中开发自定义日志组件,我想获取方法名称、行号和类名,我尝试使用 StackTraceElement,但我只能从调用它的位置获取方法名称和行号,范围StackTraceElement 仅在调用它的方法内,但我需要打印类中所有方法的方法名称和行号,有人可以帮我这样做吗?
问问题
2219 次
2 回答
4
For the class name
this.getClass().getName();
should be enough.
For line number I found
Thread.currentThread().getStackTrace()[1].getLineNumber();
and the method would be
Thread.currentThread().getStackTrace()[1].getMethodName()
Remember to access the right element from the array from the getStackTrace()
.
于 2013-10-01T09:42:59.693 回答
0
对于使用相同查询的任何新访问者,Java 9 及更高版本具有专门用于此目的的附加功能,称为StackWalker
List<StackFrame> stack =
StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk((s) ->
s.collect(Collectors.toList()));
System.out.println("All frames : \n" + stack.toString());
另请参阅教程
于 2019-01-04T09:24:25.277 回答