Java Reflection - 获取类的所有实例变量名

Cor*_*rey 5 java reflection android json

我正在编写一个 android 应用程序,它需要将 JSON 对象绑定到域实体中,并将​​ JSON 中的键作为实例变量。由于有多个域实体,每个实体都有 JSON 需要在应用程序中绑定到的不同实例变量,因此我想编写一个方法,如下所示:

  1. 循环遍历域中的所有实例变量
  2. 如果 JSON 中存在具有实例变量名称的键,则从 JSON 中获取此键的值,并将此键名称的域的实例变量设置为等于此值。

我对将类绑定到 JSON 感兴趣的原因是,如果 JSON 由于某种原因发生更改,当应用程序域中不存在实例变量时,我不希望它破坏应用程序特定的 JSON 密钥。

在此先感谢您的帮助!

oks*_*ayt 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());                
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将打印出:

Found non-static field: bar
Found non-static field: baz
Run Code Online (Sandbox Code Playgroud)