Current class and method namesFrom WikiJavabuy this book
Probably this snippet could be used also when defining the
DescriptionBelow I present you two different ways to get the current Class:
The simplest way to get the name of the class where your code is being executed in is using the String clazz = this.getClass().getName(); This works only if executed in an Object, namely an instanciated class. If you try to execute the code above in a Also, the class returned by the above method may actually be a subclass of the class in which the method is defined. This is because subclasses inherit the methods of their parents; and getClass() returns the actual runtime type of the object. To get the actual class in which a method is defined, use the method below also. In a String clazz = Thread.currentThread().getStackTrace()[1].getClassName(); Which uses the static method A similar trick can be used to find out the name of the method currently executed: String method = Thread.currentThread().getStackTrace()[1].getMethodName(); It's exactly the same principle, just you dig out the name of the method instead of the class. The codepackage org.wikijava.reflection; public class MethodName { /** * @param args */ public static void main(String[] args) { MethodName methodName = new MethodName(); String clazz = Thread.currentThread() .getStackTrace()[1].getClassName(); String method = Thread.currentThread() .getStackTrace()[1].getMethodName(); System.out.println("class name: " + clazz + " Method Name " + method); methodName.anotherMethod(); } private void anotherMethod() { String clazz = this.getClass().getName(); String method = Thread.currentThread() .getStackTrace()[1].getMethodName(); System.out.println("class name: " + clazz + " Method Name " + method); } } |
