Java反射 - 获取类的所有实例变量名称

6
我正在编写一款Android应用程序,需要将一个JSON对象绑定到一个领域实体中,并使用JSON的键作为实例变量。由于有几个不同的领域实体,每个实体都有不同的实例变量需要在应用程序中与JSON绑定,因此我想编写以下方法:
  1. 循环遍历领域中的所有实例变量
  2. 如果JSON中存在与实例变量名称相同的键,则从JSON中获取该键的值,并将该值设置为具有该键名称的领域实体的实例变量。
我之所以对从类到JSON进行绑定感兴趣,是因为如果JSON由于某种原因发生更改,当实例变量不存在于特定JSON键的应用程序域中时,我不希望它破坏应用程序。
非常感谢您提供的任何帮助!
2个回答

5

很可能你想使用一个能够为你完成此操作的json库。 Jackson 是一个不错的选择,它也被 Spring MVC 使用。

回答你的问题,你可以在一个类上使用 getDeclaredFields() 方法,并使用 java.lang.reflect.Modifier.isStatic() 来检查字段是否是静态的。

private static class Foo {
    private static long car;
    private int bar;
    private String baz;
}

public static void main(String[] args) {
    for (Field field : Foo.class.getDeclaredFields()) {
        if (!Modifier.isStatic(field.getModifiers())) {
            System.out.println("Found non-static field: " + field.getName());                
        }
    }
}

这将打印出以下内容:
Found non-static field: bar
Found non-static field: baz

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接