反射$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 我觉得是比较好的方案,可以彻底的解决问题而且还能使用新的特性

 

 
 
posted @ 2017-09-26 09:09  manmanlu  阅读(164)  评论(0编辑  收藏  举报