- - PR -
プログラムの呼び出し元を調べる方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-16 11:24
プログラムの呼び出し元を調べる方法を調べているのですがわからないので
ご存知の方がいらっしゃればご教授願います。 例えば以下のようにHoge1.mainとHoge2.mainを呼び出しており Hoge1,Hoge2の内部では同じクラスやメソッドを呼び出しております この内部で呼ばれているメソッドにて呼び出し元ををたどりHoge1、Hoge2 どちらから呼ばれたのかを調べたいのです。 import Hoge1; import Hoge2; public class Calltest { int iret1 = Hoge1.main(); int iret2 = Hoge2.main(); } | ||||
|
投稿日時: 2005-05-16 11:35
例外を生成して、StackTraceElementを取り出すと調べられますよ。
一応サンプルを。
| ||||
|
投稿日時: 2005-05-16 11:52
ちなみに、1.5 以降では、こんな書き方もできるようになりました。
StackTraceElement[] es = Thread.currentThread().getStackTrace(); | ||||
|
投稿日時: 2005-05-16 14:50
シュンさんどうもありがとうございました、ご指摘の方法でいけそうです。
後ひとつ教えてほしいのですが... es[]を検索して特定の文字列が含まれているか検索をしたいのですが 下記のようにCASTしようとしてもコンパイルエラーとなります。 どのようにすれば特定の文字列と比較できるのかご存知でしたらお教え願います。 StackTraceElement[] es = new Exception().getStackTrace(); for (int i = 0; i < es.length; i++){ String strTrace = (String) es[i]; <<--この部分です int n = strTrace.indexOf("SearchString"); } | ||||
|
投稿日時: 2005-05-16 15:06
文字列変換に関して自己解決です
String strTrace = (String) es[i].toString(); これでよかったんですね、どうもありがとうございました。 |
1