実行中のメソッド名やクラス名を取得する方法

new Throwable()やThread.currentThread()のgetStackTrace()を使用すると、このクラスはStackTraceElement型の配列を返却するので、 呼び出し元のスタックフレームの情報を得ることができます。

またエラーではないときの、スタックトレースなどにも使用できます。

Throwable#getStackTrace()はJ2SE1.4から追加されています。
Thread#getStackTrace()はJ2SE5.0から追加されています。

この配列つまりスタックの最初である0番目の要素が、Throwableクラスを生成したメソッドを表す要素となります。

new Throwable().getStackTrace()[0].getMethodName()
または
Thread.currentThread().getStackTrace()[0].getMethodName()

このようにすると、このコードが書かれている部分のメソッド名を取得することができます。

getFileName()ファイル名Test.java
getClassName()クラス名Test
getMethodName()メソッド名traceTest
getLineNumber()行数・行番号100
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
for (StackTraceElement stackTraceElement : stackTraceElements) {
  System.out.println("-----------------------------");
  System.out.println("ClassName  : " + stackTraceElement.getClassName());
  System.out.println("FileName   : " + stackTraceElement.getFileName());
  System.out.println("MethodName : " + stackTraceElement.getMethodName());
  System.out.println("LineNumber : " + stackTraceElement.getLineNumber());
  System.out.println("-----------------------------");
}

関連記事

スポンサーリンク

Acl: insert

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る