実行時に実行されているメソッド名を知る方法があるのでしょうか?Javaでそのメソッド内からメソッド名を見つける方法は?
たとえば、private void doSomething (String s)
メソッドの内部では、私はdoSomething (String s)
メソッドを実行していることを知りたいと思います。
実行時に実行されているメソッド名を知る方法があるのでしょうか?Javaでそのメソッド内からメソッド名を見つける方法は?
たとえば、private void doSomething (String s)
メソッドの内部では、私はdoSomething (String s)
メソッドを実行していることを知りたいと思います。
を参照してください。また、あなたがスタックトレースを取得するために、例外を必要としない、
あなたはThread.currentThread().getStackTrace()
でそれを得ることができます。
public class Test2 {
public static void main(String args[]) {
new Test2().doit();
}
public void doit() {
System.out.println(
Thread.currentThread().getStackTrace()[1].getMethodName()); // output : doit
}
}
ここにお会いしてうれしいです:) –
これは、スタックを取得するために例外を作成する必要がないので、より良い解決策です。 – rfeak
なぜこれが私のために働いているのか分かりません... Java 1.5を使って "getStackTrace"を表示します。 –
System.out.println(new Exception().getStackTrace()[0].getMethodName());
JDK1.5以降
Method lastMethodCalled = this.getClass().getEnclosingMethod();
これは彼が求めていたことをしません。 [このリンク](http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getEnclosingMethod())を参照してください。 – job
これは本当にコードに必要なものではありません。私は非常に多くのあなたがそれを必要としないようにあなたのデザインを考え直すことをお勧めしたいと思います。 –
あなたがその方法の中にいるなら、あなたはすでにその名前を知っていますよね? :)あなたが呼び出し元メソッドの名前を知りたい場合は、以下のJigarの答えがあなたが探しているものです。インデックスとして0の代わりに1を使用してください。 –