android 工作室中出现了一个奇怪的字段

a weird field appear in android studio

我有一个pojoclass

运行 这个代码

Field[] fields = clazz.getDeclaredFields();

我在 Android Studio IDE 下得到了一个字段:

它的类型是接口com.android.tools.fd.runtime.IncrementalChange 它的名字是 $change

我的 Android Studio 版本是 2.0 Preview 4

the pojo class which i definded by myself didn't have $change field

当我运行eclipse中的代码时,它工作正常。

场从何而来? 我怎样才能避免这个字段,Android Studio 中是否有一些设置?

添加此字段很可能是为了支持 Android Studio 2.0 中添加的 Instant 运行 功能,如果关闭 Instant 运行,将不会出现。

我们可以通过使用合成修改器检查来解决此问题,而不是关闭即时 运行。 'com.android.tools.fd.runtime.IncrementalChange' 是合成的,所以我们可以使用 isSynthec 方法检查该字段是否是合成的。

Field[] fields = objClass.getFields();
for (Field field : fields) {
            String name = field.getName();
            Object value;

            if(field.isSynthetic()){
                continue;
            }
          //add your code here
            }

我觉得diordna的答案最好。安装运行是AndroidStudio的新功能,我就不关了。

我在我的 sdk 库中使用 JsonTool link,当我 运行 我的应用程序与 androidStudio2.2 JsonTooll.objectToJson() 给我一个错误的 json 字符串时,我添加代码
if (name.contains("this$") || field.isSynthetic()) continue;

解决