2012-06-13 171 views
1

使用Java,我必須從XML文件中獲取多組值以用於我的代碼。只是碰巧,我檢索的值之一是靜態變量的名稱(其值在類文件中定義)。我需要找到一種方法來獲取靜態變量的值,使用名稱我從XML文件中獲得的變量。使用變量的名稱獲取變量的值,作爲變量值傳遞

幫助?

+1

不清楚。有些代碼可能會有幫助 – adarshr

回答

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
+0

正是我想要的。非常感謝。 – QVSJ

1

使用反射,如下:

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

使用反射API,你可以得到一個類的靜態變量名稱如下。

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

然後,您可以迭代它們並與您的xml名稱值進行比較。