リフレクションを使うと、クラスに関するすべてを得ることができます。宣言されたメソッド、フィールド、クラス(そして場合によってはそれ以上)をすべて取得できますが、メソッドに反映する方法が見つからないため、そのメソッドが使用しているクラスを見つけることができます。Javaがメソッドのスコープの変数に反映する
私は基本的に、特定のクラスにある他のクラスへのすべての依存関係を調べたいと思います。
例:どのように私はMyClassのは、そのコンストラクタに工assを使用していることを知ることができます
import com.yada.yada.yada.SomeClass
public class MyClass
{
public MyClass
{
new SomeClass();
}
}
: は、次のコードを考えると?
私は、クラスファイルに定義されているすべてのインポートステートメントを取得する方法を考えようとしていましたが、それでも何も見つかりませんでした。しかし、クラスファイルに定義されているすべてのimport文を何とか掘り起こす方法があると仮定すると、import文を必要としない同じパッケージに定義されているクラスについてはどうでしょうか?
EDIT:
シナリオ:目標は、他のプロセスに、このクラス(MyClassの)のバイトコードを送信することです。この他のプロセスはバイトコードを受け取り、クラスローダーを使用してクラス(MyClass)をロードします。問題は、他のプロセスでMyClassのインスタンスを作成して実行しようとすると、SomeClassの定義が見つからないために失敗するということです。
SomeClassがMyClassのメンバーだった場合、それは問題ではありませんが、それに対する唯一の参照はメソッドにあるため、リフレクションを介して取得する方法はありません。
問題のクラスがこのプロセスでインスタンス化されない場合(最後の編集、シナリオビットを参照) – JHollanti
@JHollanti:それは反射を使用する場合、あなたは完全に運のないです。また、バイトコードを調べることによって直接依存関係を得ることはできますが、依然として間接依存の問題があります。 –
それは吸う。さて、絵本に戻って。ご協力いただきありがとうございます。 – JHollanti