使用 Java,我必须从 XML 文件中获取多组值才能在我的代码中使用。碰巧的是,我检索的值之一是静态变量的名称(其值在类文件中定义。)我需要找到一种方法来使用名称获取静态变量的值我从 XML 文件中得到的变量。
帮助?
使用 Java,我必须从 XML 文件中获取多组值才能在我的代码中使用。碰巧的是,我检索的值之一是静态变量的名称(其值在类文件中定义。)我需要找到一种方法来使用名称获取静态变量的值我从 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
输出
字段值为 bar
使用反射,如下:
Field f1 = <ClassHavingTheStaticField>.class.getDeclaredField("<staticFieldName>");
Object o = f1.get(null);
使用反射 API,您可以获得类的静态变量名称,如下所示。
Field[] fields = YourClass.class.getDeclaredFields();
然后您可以迭代它们并与您的 xml 名称值进行比较。