簡體   English   中英

如何將Field對象解析為字符串(Java)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM