0

私のシナリオ:

クラスは、ClassLoader を使用して多数の異なるクラスからロードされます。

別のクラスをロードするクラスからメソッドと変数を取得するにはどうすればよいですか? つまり、名前がわからないクラスからメソッドと変数を取得します。

例:

public class MainClass {
 public static String str = "hey";
 public static void main(String[] args) {
  //load the OtherClass class, create an instance of it, and invoke its run method
 }
}

public class OtherClass {
 public void run() {
  //get all variables of the class that instantialized the class
 }
}

スタックオーバーフローを検索しましたが、運がありません:/

どんな助けでも感謝します:)。

マイク。

4

3 に答える 3

3

何を求めているのかわかりませんが、動的にロードされたクラスが、run()呼び出されたコードを含むクラスのフィールドとメソッドにアクセスできるようにしたいようです。あなたはこれを行うことができます:

// you might need [2] in the following line
String callerClass = Thread.currentThread().getStackTrace()[1].getClassName();

これは、現在のメソッドが呼び出された元の完全修飾クラス名です。それができたら、リフレクションを使用してそのクラスのフィールドとメソッドにアクセスできます。

Class clazz = Class.forName(callerClass);
Field[] fields = clazz.getFields();
Method[] methods = clazz.getMethods();

アクセスできないメンバーも必要な場合は、 と を使用getDeclaredFields()getDeclaredMethods()ます。

その他のアイデアについては、この投稿をご覧ください。

于 2011-07-29T21:08:42.130 に答える
1

これはReflectionによって実現されます。

于 2011-07-29T20:57:46.363 に答える