布尔值、条件运算符和自动装箱
为什么这会抛出NullPointerException
public static void main(String[] args) throws Exception {
Boolean b = true ? returnsNull() : false; // NPE on this line.
System.out.println(b);
}
public static Boolean returnsNull() {
return null;
}
虽然这没有
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
解决方案是顺便替换,以避免被拆箱到 - 这是不可能的。但这不是问题所在。问题是为什么?JLS中是否有任何参考资料证实了这种行为,特别是第二种情况?false
Boolean.FALSE
null
boolean