记一个对象引用造成的生产bug

 

 

 一个静态final修饰的字符串数组,final给了假象不可修改,但只是不可修改地址值   数组的remove add等操作还是可以的

 

 

 

这个静态数组唯一引用 doCheckOutVoucher(VoucherConvertVo voucherConvertVo, List<String> subjectCodes)这个方法中

 

 

 

 

左边修改前根据条件remove掉数组中一个元素 ,数组还剩4个元素,switch 正常执行;

第二次进这个方法  如果这个if走和第一次一样的分支 remove操作执行结果一样 数组还剩4个元素,switch 正常执行;

第N次进这个方法  只要这个if走和第一次不一样的分支 remove操作执行成功 数组还剩3个元素,switch 顺序出现问题 bug出现;

但是出问题之后测试找我   我本地跑程序走流程  数组恢复为5个元素  无法复现问题 流程正常

 

修改:对象引用药重新赋值 或者深拷贝  不要直接操作原对象  final 有点掩耳盗铃了

 

posted @ 2022-03-26 16:38  weightoverflow  阅读(50)  评论(0)    收藏  举报