使用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個
輸出
Field value is bar
正是我想要的。非常感謝。 – QVSJ
使用反射,如下:
Field f1 = <ClassHavingTheStaticField>.class.getDeclaredField("<staticFieldName>");
Object o = f1.get(null);
使用反射API,你可以得到一個類的靜態變量名稱如下。
Field[] fields = YourClass.class.getDeclaredFields();
然後,您可以迭代它們並與您的xml名稱值進行比較。
不清楚。有些代碼可能會有幫助 – adarshr