记一个对象引用造成的生产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 有点掩耳盗铃了


浙公网安备 33010602011771号