Possible Duplicate:
Tricky ternary operator in Java – autoboxing
We know that int roomCode = null; is not allowed by the compiler.
Then why the Code 1 doesn’t give a compiler error, when Code 2 does.
Code 1:
int roomCode = (childCount == 0) ? 100 : null;
Code 2:
int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int
I did a little debugging and found out that when evaluating
the program calls the method
valueOfof Integer to evaluate thenull. It returns an Integer and as an Integer can be null (and not an int), it compiles. As if you were doing something like:So it is related to autoboxing.