Почему это вызывает 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
в логического
- что невозможно. Но вопрос не в этом. Возникает вопрос почему ? Есть ли в JLS ссылки, подтверждающие это поведение, особенно во втором случае?