项目中突然报空指针异常

 Integer code=null;
 code=code==null?500:code;

排查发现三元运算符空指针异常,表面上看不出来有什么问题,编译器编译的时候会保证:2边数据类型一致如:

String code=true?"":0;

会编译不通过。因为String 和int不是一个类型

按照上面的逻辑Integer是class类型并不是数值类型 编译器应该编译不通过。其实编译之后编译器后的代码是:
ccode=code==null?500:code.initValue();
所以这段代码才会编译通过。但是当code是null 调用initValue就会报空指针异常

同理以下代码也会报空指针异常
 Integer code=null;
       int i=code;
--编译之后代码
int i=code.initValue()

 

这一切的原因都是编译器自动拆箱造成的。如下情况 价格是否为null判断就好了 

 

 



相关文章:

  • 2022-12-23
  • 2021-11-22
  • 2021-07-20
  • 2021-10-14
  • 2021-11-29
  • 2021-10-26
  • 2021-09-19
猜你喜欢
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2022-12-23
  • 2022-12-23
  • 2021-05-17
相关资源
相似解决方案