android 工作室中出现了一个奇怪的字段
a weird field appear in android studio
我有一个pojo
class
运行 这个代码
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;
解决
我有一个pojo
class
运行 这个代码
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的答案最好
我在我的 sdk 库中使用 JsonTool link,当我 运行 我的应用程序与 androidStudio2.2 JsonTooll.objectToJson() 给我一个错误的 json 字符串时,我添加代码
if (name.contains("this$") || field.isSynthetic()) continue;
解决