トップ 一覧 置換 検索 ヘルプ RSS ログイン

呼び出し元のメソッド名、クラス名を調べるの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
java.util.loggingLogRecord#inferCaller()
を参考にすると

  public static void hoge(){
   	StackTraceElement stack[] = (new Throwable()).getStackTrace();
	// First, search back to a method in the Logger class.
	int ix = 0;
	while (ix < stack.length) {
	    StackTraceElement frame = stack[ix];
	    String cname = frame.getClassName();
	    if (cname.equals("java.util.logging.Logger")) {
		break;
	    }
	    ix++;
	}
	// Now search for the first frame before the "Logger" class.
	while (ix < stack.length) {
	    StackTraceElement frame = stack[ix];
	    String cname = frame.getClassName();
	    if (!cname.equals("java.util.logging.Logger")) {
		// We've found the relevant frame.
	        // setSourceClassName(cname);
	        // setSourceMethodName(frame.getMethodName());
                System.out.println(cname);
                System.out.println(frame.getMethodName());
		return;
	    }
	    ix++;
	} 
  }

で呼び出し元がわかる

{{category2 プログラミング言語,Java}}