在執行個體方法中如何擷取該方法所屬的類名、方法名、行數呢?
例子項目有兩個類:

package com.jn.bean;
public class student {
public string method2(int age,string name) {
system.out.println("execute....");
class clazz = this.getclass();
string classname = clazz.getcanonicalname();/* com.jn.bean.student */
string classsimplename = clazz.getsimplename();
object[] objs = clazz.getsigners();
//目前的線程
thread currentthread=thread.currentthread();
//目前的線程名稱
string threadname =currentthread .getname();
stacktraceelement stackelement=currentthread.getstacktrace()[1];
//目前的方法名
string methodname=stackelement.getmethodname();
//目前的檔案名
string filename=stackelement.getfilename();
int linenum=stackelement.getlinenumber();
system.out.println("class name:\t\t" + classname);
system.out.println("class simple name:\t" + classsimplename);
system.out.println("thread name:\t\t" + threadname);
system.out.println("method name:\t\t"+methodname);
system.out.println("file name:\t\t"+filename);
system.out.println("line number:\t\t"+linenum);
system.out.println("----------------------------------\n");
system.out.println("objs:" + objs);
if (objs != null) {
for (int i = 0; i < objs.length; i++) {
object object = objs[i];
system.out.println(object);
}
}
return "success";
}
}
package com.jn.main;
import com.jn.bean.student;
public class main2 {
public static void main(string[] args) {
student student=new student();
student.method2(1,null);
運作結果:
項目結構如下:
總結:
(1)在執行個體方法中擷取類名
class clazz = this.getclass();//因為是執行個體方法,是以可以用this
string classname = clazz.getcanonicalname();/* com.jn.bean.student */
string classsimplename = clazz.getsimplename();
(2)擷取方法名
//目前的線程
thread currentthread=thread.currentthread();
stacktraceelement stackelement=currentthread.getstacktrace()[1];
//目前的方法名
string methodname=stackelement.getmethodname();
(3)擷取目前行數
int linenum=stackelement.getlinenumber();