很多人以为以下代码当不不满足条件的时候以下判断会为null。实际上是会报空指针异常的。原因是编译后包装类型会拆箱: Integer tempStatus = false? 0 : vehicleStatus; 反编译后变为:
Integer tempStatus = false? 0.intValue() : vehicleStatus.intValue();
vehicleStatus为空对象,调用.intValue()自然会引用空指针异常
正确代码:
将基本类型0改为 包装类型Integer.valueOf(0),这样就不会发生拆箱,也就不会发生空指针引用。大家使用三目运算符两边类型不一致时,一定要引起注意