天天看點

在成員方法中擷取類名、方法名、行數

在執行個體方法中如何擷取該方法所屬的類名、方法名、行數呢?

例子項目有兩個類:

在成員方法中擷取類名、方法名、行數

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