StackTrace调用方法的研究

public class StackTraceStudy {

    public static void main(String[] args) throws Exception {

        new StackTraceStudy().invoke();

    }

    public void method(){

        for(StackTraceElement stackTraceElement:Thread.currentThread().getStackTrace())

            System.out.println(stackTraceElement.getClassName()+'.'+stackTraceElement.getMethodName());

    }

    public void invoke() throws Exception {

        StackTraceStudy stackTraceStudy =new StackTraceStudy();

        java.lang.reflect.Method method= stackTraceStudy.getClass().getMethod("method");

        method.invoke(stackTraceStudy);

    }

}
/**output
java.lang.Thread.getStackTrace

aop.StackTraceStudy.method

sun.reflect.NativeMethodAccessorImpl.invoke0

sun.reflect.NativeMethodAccessorImpl.invoke

sun.reflect.DelegatingMethodAccessorImpl.invoke

java.lang.reflect.Method.invoke

aop.StackTraceStudy.invoke

aop.StackTraceStudy.main

sun.reflect.NativeMethodAccessorImpl.invoke0

sun.reflect.NativeMethodAccessorImpl.invoke

sun.reflect.DelegatingMethodAccessorImpl.invoke

java.lang.reflect.Method.invoke

com.intellij.rt.execution.application.AppMain.main
*/

例如有的时候我都是通过stackTrace来获取调用者的信息,但是这个方法不支持反射,

要么把被调用的方法做的更智能点,但这样更麻烦(也更容易出错)

要么提供一个方法,让调用者把信息传进来

你可能感兴趣的:(StackTrace调用方法的研究)