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(
The get method returns the value of the variable name . The set method takes a parameter ( newName ) and assigns it to the name variable. The this keyword is used to refer to the current object.
The current method name that contains the execution point that is represented by the current stack trace element is provided by the java. lang. StackTraceElement. getMethodName() method.
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):
public static String getMethodName() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
}
You can also use
Thread.currentThread().getStackTrace()[1].getMethodName()
contains the last method call, but is not shorter that
new Object() {}.getClass().getEnclosingMethod().getName
I am not aware of a sorter way to do it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With