一、@Value的问题
类没加注解@Component导致@Value取正式服配置信息没生效
总结:
1)@Value必须在注册类中使用,且类加载方式必须为注入方式
2)Value不能注释在static或者final的变量
二、强转为BigDecimal精度丢失的问题
BigDecimal 要与String 转换精度才不会丢失,与类型float和double强转都会有问题。
通常这样转:new BigDecimal(价格.toString())
三、不定长参数重载函数的问题
原函数send(String a,String b,String… c)
新增重载新函数send(String a,Boolean b)
刚开始一眼看过去,肯定是没问题的,
因为参数类型不一样和个数也不一样,肯定是重载后互不干扰的才对
直到线上出问题,代码会传null的情况没考虑到。
为什么会走下面的函数,null不是boolean类型也会走,原来…
总结:
1、String… 不定长参数,可以不传 ,传null和传多个
a、send(String a,String… b)
b、send(String a)
send(“1”)这样去调用,假如没有写b方法会去调用a的,但如果a和b方法同时有,会去调b方法(虽然两个都符合,但优先b已测)
2、java布尔允许值为true,false和null3种,基本类型boolean只有true和false2种,包装类Boolean才有true,false和null3种
项目中重载函数如果写成send(String a,boolean b)就不会有问题了,因为send(“1”,null)不会调用这个方法