如何获得所有字段以及复合对象的值



我面临的问题是通过反射获得类的所有字段的值。

我有一个类,它可以有任意数量的字段,任意数量的类而这些类又可以有任意数量的字段,就像下面的

public class A{
    String string;
    int number;
    HashMap<String,String> map;
    B bclass;
}

B上面又是a类的类成员

  1. 我想获得类型的字段字符串和它们的值,如果字段是类
  2. 如果字段是再次,然后获得字段和值,例如,map属性是类型HashMap类类型,那么我需要的键和值属性是String类型。

请参阅我的代码片段来解决上述问题

private void extractStringFields(Object object) throws IllegalAccessException {
    for (Field field : object.getClass().getDeclaredFields()) {
        field.setAccessible(true);
        System.out.println("filesd : "+field.getName());
        Object value = field.get(object);
        if (field.getType().equals(String.class)) {
            System.out.println(field.getName() + "=" + value);
        }
        extractStringFields(field);
    }
}
但不幸的是,它不起作用,请帮帮我。

当你经过时,

extractStringFields(field);

它正在发送一个Field对象。所以当第二次调用forward对象时。getClass会给你Field.class。对于这个,你永远不会得到合适的值。
最好保留另一个重载类,把Field传递到那里。在这个方法中,你可以这样写,

for (Field field : field.getType().getDeclaredFields())

希望这会给你一个好的开始。

或者你可以这样写:

if(value != null){
                extractStringFields(value);
            }

相关内容

  • 没有找到相关文章

最新更新