我正在寻找一种方法来获取当前方法的名称,而无需创建空白对象.有没有办法做到这一点?这将整理我们的日志代码.
以下是我们现在所做的事情:
new Object() {}.getClass().getEnclosingMethod().getName(
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 17
怎么样Thread.currentThread().getStackTrace()[1]?
由于这使您可以检查更高级别的堆栈跟踪,因此可以轻松地将其包装在辅助方法中(请参阅下文).它还为您提供了获取比方法名称更多信息的选项,例如文件名,行号等.
编辑帮助方法可能看起来像这样(感谢@Esijija):
public static String getMethodName() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用
Thread.currentThread().getStackTrace()[1].getMethodName()
Run Code Online (Sandbox Code Playgroud)
包含最后一个方法调用,但不会更短
new Object() {}.getClass().getEnclosingMethod().getName
Run Code Online (Sandbox Code Playgroud)
我不知道分拣机的方法.