最近接手了一个老项目,之前使用的是eclipse开发的,由于eclipse实在不方便换成了AS。但是发现本来在eclipse上运行没问题的项目在AS直接就报出了NullPointerException。调试了很久发现是由于发射的字段多出了俩个,直接上图
可以看到反射得到的字段多出了俩个字段change和serialVersionUID
网上查了一下,发现change是AS中instant run工具生成出来的,关于instant run的介绍https://segmentfault.com/a/1190000004039742。而serialVersionUID则是序列化验证版本一致性的。
所以使用AS开发中使用发射时最好做一下判断
if(!(("change".equals(field.getName()))||("change".equals(field.getName()))){
//执行逻辑
}