当您使用三元运算符时,
flag ? type1 : type2
转换时,类型1和类型2必须具有相同的类型。首先,它实现了type1,然后实现了type2。
现在看看你的情况
final Integer b = false ? 0 : a;
因为
type1is
0并且它将作为原始,并且因为
a正试图将其转换为
primitive。因此为空指针。
在哪里一样棘手的测试5
final Integer b = false ? a : 0;
由于a的类型为
Integer0,因此将其包装到包装整数并分配给LHS。



