nullpointerexception - Tricky ternary operator in Java - autoboxing -
let's @ simple java code in following snippet:
public class main { private int temp() { return true ? null : 0; // no compiler error - compiler allows return value of null // in method signature returns int. } private int same() { if (true) { return null; // same not possible if, // , causes compile-time error - incompatible types. } else { return 0; } } public static void main(string[] args) { main m = new main(); system.out.println(m.temp()); system.out.println(m.same()); } }
in simplest of java code, temp()
method issues no compiler error though return type of function int
, , trying return value null
(through statement return true ? null : 0;
). when compiled, causes run time exception nullpointerexception
.
however, appears same thing wrong if represent ternary operator if
statement (as in same()
method), does issue compile-time error! why?
the compiler interprets null
null reference integer
, applies autoboxing/unboxing rules conditional operator (as described in java language specification, 15.25), , moves happily on. generate nullpointerexception
@ run time, can confirm trying it.
Comments
Post a Comment