天天看点

在成员方法中获取类名、方法名、行数

在实例方法中如何获取该方法所属的类名、方法名、行数呢?

例子项目有两个类:

在成员方法中获取类名、方法名、行数

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