0

印刷メソッドを含むメソッドではなく、呼び出し元のメソッド名を印刷できるようにしたい。これを行う方法はありますか?

private void printOrderNumber() {
    String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
    System.out.println(methodName);


    try {
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("variableOutput.txt", true)));
        out.println(methodName);
        out.println(var1);
        out.println("");
        out.close();
    } catch (IOException e) {
        //oh noes!
    }

}

private void order1(){

printOrderNumber();

}
4

1 に答える 1

2

スタックトレースを繰り返すだけ

import java.lang.*;

public class StackTraceElementDemo {

   public static void main(String[] args) {

      function1();
   }

   public static void function1()
   {
      new StackTraceElementDemo().function2();
   }

   public void function2() 
   {
      int i;
      System.out.println("method name : ");

      // print stack trace
      for( i = 1; i <= 3; i++ ) {
         System.out.println(Thread.currentThread().getStackTrace()[i].
         getMethodName());
      }
   }
}   

編集:

この部分は間違っています:

2番目の方法は、次を使用することclass.getDeclaredMethods()です:

for (Method method : Name.class.getDeclaredMethods()) {
    String name = method.getName();
}
于 2013-08-30T23:35:01.727 に答える