可能重复:
Tricky ternary operator in Java - autoboxing
我们知道编译器不允许int roomCode = null;
。
那么为什么代码1没有给出编译器错误,而代码2给出了错误。
代码1:
int roomCode = (childCount == 0) ? 100 : null;
代码2:
int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int
发布于 2012-02-23 14:03:20
我做了一点调试,发现在评估
(childCount == 0) ? 100 : null;
程序调用整数的方法valueOf
来计算null
。它返回一个Integer,当Integer可以为null (而不是int)时,它会进行编译。就好像你在做这样的事情:
int roomCode = new Integer(null);
所以它与自动装箱相关。
https://stackoverflow.com/questions/9407869
复制相似问题