前提
ClassAの処理の初めから終わりまでに呼ばれたクラス名を取得したいと思い、
Threadからクラス名を取得してみたところ、こちらの想定と違う結果となりました。
私が求めている結果は、ClassAでClassXとClassYを呼び出していたらその2つのクラスが表示されることです。
しかし、得られた結果はClassAのみでした。
実現したいこと
・ClassA最初から最後までの処理で呼び出されたクラス名(できればメソッド名)を取得したい
・結果を表示させる処理はClassAで行う
試したソースコード
Java
package sample; public class ClassA { public static void main (String[] args) { ClassX.testMethod(); ClassY.testMethod(); printStackClass(); } private static void () { int count = Thread.currentThread().getStackTrace().length - 1; System.out.println("呼び出しクラスとメソッドを出力します"); for (int i = count; i > 1; i--) { System.out.println("クラス:" + Thread.currentThread().getStackTrace()[i].getClassName() + ", メソッド:" + Thread.currentThread().getStackTrace()[i].getMethodName()); } }}
得られた結果
呼び出しクラスとメソッドを出力します クラス:ClassA, メソッド:main
求めている結果
呼び出しクラスとメソッドを出力します クラス:ClassA, メソッド:main クラス:ClassX, メソッド:testMethod クラス:ClassY, メソッド:testMethod
補足情報(FW/ツールのバージョンなど)
・eclipse 4.4
・Java 1.8
・Windows10

0 コメント