1. hasTimePeriodExtraDays = (externalSystemConfigsDTO == null) ? true : externalSystemConfigsDTO.hasTimePeriodExtraDays();
2. if(externalSystemConfigsDTO == null){
hasTimePeriodExtraDays = true;
} else {
hasTimePeriodExtraDays = externalSystemConfigsDTO.hasTimePeriodExtraDays();
}
1子句不将IT作为抛出的空指针传递,而2子句传递UT。
最佳答案
hasTimePeriodExtraDays()返回什么?布尔基元还是布尔对象?和hasTimePeriodExtraDays一样吗?
三元组带来了看不见的自动装箱,以确保双方的类型相同,这可以解释一下。
例如。如果它返回一个布尔值并且该变量是一个布尔值,则在您的IF中,即使返回值为null,它也可以正常工作。
但是在您的青少年时代,可能会将两者都转换为布尔型原语-如果返回值为null,则您将看到NullPointerException异常。
更多信息-Why does the ternary operator unexpectedly cast integers?
关于java - 三元运算符的结果不同,否则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53642452/