Java を使用して、XML ファイルから値の複数のセットをフェッチしてコードで使用する必要があります。たまたま、取得した値の 1 つが静的変数の名前です (その値はクラス ファイルで定義されています)。名前を使用して静的変数の値をフェッチする方法を見つける必要があります。 XML ファイルから取得した変数。
ヘルプ?
Java を使用して、XML ファイルから値の複数のセットをフェッチしてコードで使用する必要があります。たまたま、取得した値の 1 つが静的変数の名前です (その値はクラス ファイルで定義されています)。名前を使用して静的変数の値をフェッチする方法を見つける必要があります。 XML ファイルから取得した変数。
ヘルプ?
を使用Class.forName
してクラスをロードできます (必要に応じて、クラスへの直接参照がある場合は を使用するだけですClassName.class
) 。Class#getField
Field#get
import java.lang.reflect.*;
public class GetTheStatic {
public static final void main(String[] args) {
String className;
String fieldName;
Class cls;
Field fld;
String value;
if (args.length != 2) {
System.out.println("Need [classname] [fieldName]");
System.exit(-1);
}
try {
className = args[0];
fieldName = args[1];
cls = Class.forName(className);
fld = cls.getField(fieldName);
value = (String)fld.get(cls);
System.out.println("Field value is " + value);
System.exit(0);
}
catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
System.exit(-1);
}
}
}
この他のクラスがあると仮定します:
public class TheStatic {
public static String foo = "bar";
}
次に、これ:
java GetTheStatic TheStatic foo
出力
フィールド値はバーです
リフレクションを次のように使用します。
Field f1 = <ClassHavingTheStaticField>.class.getDeclaredField("<staticFieldName>");
Object o = f1.get(null);
リフレクション API を使用すると、次のようにクラスの静的変数名を取得できます。
Field[] fields = YourClass.class.getDeclaredFields();
次に、それらを繰り返して、xml 名の値と比較できます。