空のオブジェクトを作成せずに現在のメソッドの名前を取得する方法を探しています。これを行う方法はありますか?これにより、ロギング コードが整理されます。
これが私たちが今やっていることです:
new Object() {}.getClass().getEnclosingMethod().getName(
空のオブジェクトを作成せずに現在のメソッドの名前を取得する方法を探しています。これを行う方法はありますか?これにより、ロギング コードが整理されます。
これが私たちが今やっていることです:
new Object() {}.getClass().getEnclosingMethod().getName(
どうThread.currentThread().getStackTrace()[1]
ですか?
これにより、より高いレベルのスタック トレースを調べることができるため、これをヘルパー メソッドで簡単にラップできます (以下を参照)。また、ファイル名、行番号など、メソッド名だけでなく、かなり多くの情報を取得するオプションも提供します。
editヘルパーメソッドは次のようになります(@Esailjaに感謝します):
public static String getMethodName() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
}
使用することもできます
Thread.currentThread().getStackTrace()[1].getMethodName()
最後のメソッド呼び出しが含まれていますが、それより短くはありません
new Object() {}.getClass().getEnclosingMethod().getName
私はそれを行うためのソーターの方法を知りません。
を使用できますthread.currentThread().getStacktrace()[0].getMethodName()
。ただし、これにはさらに時間がかかりますnew Throwable().getStacktrace()
(http://alexradzin.blogspot.co.il/2011/12/how-slow-getstacktrace-is.htmlを参照)