I'm looking for a way to get the name of the current method without having to create a blank object. Is there a way to do this? This would tidy up our logging code.
Here is what we do now:
new Object() {}.getClass().getEnclosingMethod().getName(
I'm looking for a way to get the name of the current method without having to create a blank object. Is there a way to do this? This would tidy up our logging code.
Here is what we do now:
new Object() {}.getClass().getEnclosingMethod().getName(
You can also use
contains the last method call, but is not shorter that
I am not aware of a sorter way to do it.
You can use
thread.currentThread().getStacktrace()[0].getMethodName()
. But this even takes more time thannew Throwable().getStacktrace()
(see http://alexradzin.blogspot.co.il/2011/12/how-slow-getstacktrace-is.html)How about
Thread.currentThread().getStackTrace()[1]
?Since this enables you to examine higher levels of the stack trace, you could easily wrap this in a helper method (see below). It also gives you the option to get quite a bit more info than just the method name, such as the file name, line number etc.
edit The helper method could look something like this (thanks @Esailija):