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
(childCount == 0) ? 100 : null;
the program calls the method valueOf
of Integer to evaluate the null
. It returns an Integer and as an Integer can be null (and not an int), it compiles. As if you were doing something like:
int roomCode = new Integer(null);
So it is related to autoboxing.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With