呼び出しクラス名をすべて取得したい

前提

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 コメント