java代码获取当前类类名、方法名
(2013-01-17 22:36:51)
标签:
杂谈 |
分类: JAVA |
Description
Below I present you two different ways to get the current Class:
- Using Thread
- Using getClass()
The simplest way to get the name of the class where your code is
being executed in is using the getClass()
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 static
this
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 static
String clazz = Thread.currentThread().getStackTrace()[1].getClassName();
Which uses the static methodgetStackTrace()
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 code
package org.wikijava.reflection;
public class MethodName { 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); } }