如何将Field对象解析为字符串(Java)

怪胎

我有一个Field对象,Field f并且知道它是的实例String

我实际上如何将其解析Field fString 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();
     }
   }
}
弗洛里安·舍茨(Florian Schaetz)

字段永远不会是字符串的实例。这是一个领域。您可能会想到,该字段存储了一个字符串。而且您不解析字段,只能访问它们。字段属于一个类,因此,要获取/设置它,您必须将要从中获取值(或将其设置为)的实际对象作为参数(静态字段除外,请参见下文)。

字段可以是静态的,也可以不是静态的。例如...

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"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章