1. hasTimePeriodExtraDays = (externalSystemConfigsDTO == null) ? true : externalSystemConfigsDTO.hasTimePeriodExtraDays();
2. if(externalSystemConfigsDTO == null){
hasTimePeriodExtraDays = true;
} else {
hasTimePeriodExtraDays = externalSystemConfigsDTO.hasTimePeriodExtraDays();
}
第1个子句不将UT作为空指针抛出而传递,而第2个子句则通过UT。
答案 0 :(得分:1)
hasTimePeriodExtraDays()返回什么?布尔基元还是布尔对象?和hasTimePeriodExtraDays一样吗?
三元组带来了看不见的自动装箱,以确保双方的类型相同,这也许可以解释这一点。
E.G。如果它返回一个布尔值并且该变量是一个布尔值,则在您的IF中,即使返回值为null,也可以正常工作。
但是在您的青少年时代,它们可能都将转换为布尔型原语-如果返回为null,则您将看到NullPointerException。
更多信息-Why does the ternary operator unexpectedly cast integers?