11

空のオブジェクトを作成せずに現在のメソッドの名前を取得する方法を探しています。これを行う方法はありますか?これにより、ロギング コードが整理されます。

これが私たちが今やっていることです:

new Object() {}.getClass().getEnclosingMethod().getName(
4

3 に答える 3

18

どうThread.currentThread().getStackTrace()[1]ですか?

これにより、より高いレベルのスタック トレースを調べることができるため、これをヘルパー メソッドで簡単にラップできます (以下を参照)。また、ファイル名、行番号など、メソッド名だけでなく、かなり多くの情報を取得するオプションも提供します。

editヘルパーメソッドは次のようになります(@Esailjaに感謝します):

public static String getMethodName() {
    return Thread.currentThread().getStackTrace()[2].getMethodName();
} 
于 2012-11-28T16:18:17.413 に答える
6

使用することもできます

Thread.currentThread().getStackTrace()[1].getMethodName() 

最後のメソッド呼び出しが含まれていますが、それより短くはありません

new Object() {}.getClass().getEnclosingMethod().getName

私はそれを行うためのソーターの方法を知りません。

于 2012-11-28T16:19:21.763 に答える
3

を使用できますthread.currentThread().getStacktrace()[0].getMethodName()。ただし、これにはさらに時間がかかりますnew Throwable().getStacktrace()http://alexradzin.blogspot.co.il/2011/12/how-slow-getstacktrace-is.htmlを参照)

于 2012-11-28T16:20:12.707 に答える