Java Reflection - 获取嵌套类中字段的值

时间:2016-06-13 23:06:34

标签: java

我想检索实例变量“customerId”的值。我有一套返回此字段的api。在一些apis中,这个字段位于基类之下。在某些情况下,它嵌套在以下几个级别。有没有办法按字段名称“customerId”获取值,而不管实例变量在哪里?

例如

Customer
   customerId

Order
 Customer
   customerId

Account
 Order
   customerId

1 个答案:

答案 0 :(得分:0)

试试这个:

public static Map<Field, Integer> getFieldWithName(Object o, Map<Field, Integer> list) throws IllegalAccessException {
    Class<?> c = o.getClass();
    for(Field field : c.getDeclaredFields()) {
        if(field.getName().equals("customerId") && field.getType().equals(int.class)) {
            list.put(field, field.getInt(o));
        } else {
            if(!field.isAccessible()) {
                field.setAccessible(true);
            }
            getFieldWithName(field.get(o), list);
        }

    }
    return list;
}

这将返回一个Map,其中包含名为customerId的字段以及存储在此字段中的值。 GL!