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

回答2件
あなたの回答
tips
プレビュー