3

という名前の 3 つのクラスがありFirstClass,SecondClass and ThirdClassます。3 つのクラスのソースは次のとおりです。

FirstClass.java

public class FirstClass {
    public void firstMethod(){
        SecondClass secondClass = new SecondClass();
        secondClass.secondMethod();
    }
    public static void main(String[] args) {
        FirstClass firstClass = new FirstClass();
        firstClass.firstMethod();
    }

}

SecondClass.java

public class SecondClass {
    public void secondMethod(){
        ThirdClass thirdClass = new ThirdClass();
        thirdClass.thirdMethod();
    }

}

ThirdClass.java

public class ThirdClass {
    public void thirdMethod(){
        System.out.println("Here i need to print where the call comes from,(call hierarchy) Is it possible?");
    }
}

最後のメソッド(ここにありますThirdClass.thirdMethod())で、メソッド呼び出しがどこから来たのかを出力する必要があります(呼び出し階層を意味します)。だから私はそのために何を書く必要がありますthirdMethod()

4

5 に答える 5

5

現在のスレッドのスタックにアクセスするには、次のようにしてください。

Thread.currentThread().getStackTrace();

これは配列を返し、その配列をStackTraceElement印刷したり、チェックしたり、好きなことをしたりできます。

ただし、ここで注意してください。メソッドの呼び出し元に応じてメソッドの動作が異なる場合 (たとえば、スタックを分析してそれに反応するなど)、このようなコードを使用して、任意のボードに対して非常に珍しい予期しない動作を作成できます。

于 2013-11-07T07:13:00.243 に答える
1

Thread.currentThread().getStackTrace() を試すことができます

getClassName() メソッドを持つ StackTraceElement の配列を返します。

于 2013-11-07T07:12:42.987 に答える