反射$change属性问题
写DB框架的时候,使用反射获取属性的时候,多了一个$change属性,当场一脸懵比。
stackoverflow 发现是Android Studio2.0的.Instant Run 的问题.
解决办法
[转载请注明:Canney 原创:http://blog.csdn.net/canney_chen/article/details/51323663 ]
解决方法 方法1
既然是增加了Instant Run特性导致的,那就把此特性关闭就可以了(默认是开启的)
关闭方法:Settings> Build, Execution, Deployment> Instant Run> Enable Instant Run to hot swap code/resource changes on deploy(default enabled)(取消此选项)
方法2
Field[] fields = objClass.getFields();
for (Field field : fields) {
if(field.isSynthetic()){
continue;
}
//add your code here
}
此方法增加了for 及一个判断,Field.isSynthetic()方法是判断当前属性是编译插入时返回true。
总结 方法1 的解决不会改变现有的代码,风险较小,但是不能使用Studio的即时编译特性 方法2 我觉得是比较好的方案,可以彻底的解决问题而且还能使用新的特性