1

Java を使用して、XML ファイルから値の複数のセットをフェッチしてコードで使用する必要があります。たまたま、取得した値の 1 つが静的変数の名前です (その値はクラス ファイルで定義されています)。名前を使用して静的変数の値をフェッチする方法を見つける必要があります。 XML ファイルから取得した変数。

ヘルプ?

4

3 に答える 3

1

を使用Class.forNameしてクラスをロードできます (必要に応じて、クラスへの直接参照がある場合は を使用するだけですClassName.class) 。Class#getFieldField#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

出力

フィールド値はバーです
于 2012-06-13T10:17:45.550 に答える
1

リフレクションを次のように使用します。

Field f1 = <ClassHavingTheStaticField>.class.getDeclaredField("<staticFieldName>");
Object o = f1.get(null);
于 2012-06-13T10:22:09.907 に答える
1

リフレクション API を使用すると、次のようにクラスの静的変数名を取得できます。

Field[] fields = YourClass.class.getDeclaredFields();

次に、それらを繰り返して、xml 名の値と比較できます。

于 2012-06-13T10:22:20.860 に答える