[英]How to parse a Field object to a String (Java)
我有一個Field對象Field f
並且知道它是String
一個實例。
我實際上如何將此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();
}
}
}
字段永遠不會是字符串的實例。 這是一個領域。 您可能會想到,該字段存儲一個字符串。 而且您不解析字段,只能訪問它們。 字段屬於一個類,因此,要獲取/設置它,必須將要從中獲取值(或將其設置為)的實際對象作為參數(靜態字段除外,請參見下文)。
字段可以是靜態的,也可以不是。 例如...
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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.