Почему этот бросок 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
}
?
Решение, кстати, заменит false
на Boolean.FALSE
, чтобы избежать null
, который был распакован на boolean
- что невозможно. Но это не вопрос. Вопрос в том, почему? Есть ли ссылки в JLS, которые подтверждают это поведение, особенно 2-го случая?