【问题标题】:How to parse a Field object to a String (Java)如何将字段对象解析为字符串(Java)
【发布时间】:2015-08-15 12:34:38
【问题描述】:

我有一个 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();
     }
   }
}

【问题讨论】:

    标签: java string parsing field


    【解决方案1】:

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

    字段可以是静态的,也可以不是。比如……

    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"
    

    【讨论】:

    • 谢谢 :) 我如何设置字段的值?
    • 完全一样,只是将您要设置为第二个参数的值(而不是 null / something )。
    • 谢谢。接受了你的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多