2015-08-15 99 views
1

我有一個Field對象Field f,並且知道它是String的一個實例。如何將Field對象解析爲字符串(Java)

我該如何將Field f解析爲String s

我試圖設置字段的值(這不起作用)。

我的代碼:

Field[] fields=LanguageHandler.class.getDeclaredFields(); 
for(Field field:fields){ 
    if(field.getType().equals(String.class)){ 
    field.setAccessible(true); 
    try { 
     field.set(handler, ChatColor.translateAlternateColorCodes('&', cfg.getString(field.getName()))); 
    } catch (IllegalArgumentException | IllegalAccessException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
} 

回答

2

場從來都不是一個String的實例。這是一個領域。你可能認爲,Field存儲一個字符串。你不解析字段,你只能訪問它們。一個字段屬於一個類,因此,爲了獲取/設置它,你必須給你想要從其中獲取值(或設置爲)作爲參數的實際對象(除了靜態字段,請參見下文)。

一個字段既可以是靜態的,也可以不是靜態的。例如...

class Something { 
private static String myField; // static 
private String myOtherField; // not static 
} 

如果是靜態的,那麼你不如果該字段不是靜態需要一個對象來訪問它,並會叫...

field.setAccessible(true); // to allow accessing it if private, etc. 
String s = (String)field.get(null); 

,那麼你需要一個對象,其中外地有一定的價值,例如這樣的事情...

Something mySomething = new Something(); 
something.setMyOtherField("xyz"); 

...你最終會調用...

field.setAccessible(true); // to allow accessing it if private, etc. 
String s = (String)field.get(something); // s == "xyz" 
+0

謝謝:) 如何設置字段的值? – Freakey

+0

Excatly以相同的方式,只是你想要設置爲第二個參數的值(而不是null/something)。 –

+0

謝謝。接受你的問題。 :) – Freakey

相關問題