使用变量名称获取变量的值,作为变量值传递

时间:2012-06-13 10:15:46

标签: java

使用Java,我必须从XML文件中获取多组值以在我的代码中使用。碰巧的是,我检索的值之一是静态变量的名称(其值在类文件中定义。)我需要找到一种方法来使用名称来获取静态变量的值。我从XML文件中获取的变量。

帮助?

3 个答案:

答案 0 :(得分: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

输出

Field value is bar

答案 1 :(得分:1)

使用反射,如下:

Field f1 = <ClassHavingTheStaticField>.class.getDeclaredField("<staticFieldName>");
Object o = f1.get(null);

答案 2 :(得分:1)

使用反射API,您可以按如下方式获取类的静态变量名称。

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

然后您可以迭代它们并与您的xml名称值进行比较。