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來獲取調用者的信息,可是這個方法不支持反射,java

要麼把被調用的方法作的更智能點,但這樣更麻煩(也更容易出錯)app

要麼提供一個方法,讓調用者把信息傳進來code

相關文章
相關標籤/搜索