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); } } 

 加载中…
加载中…