Pourquoi ce jette 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;
}
alors que ce n'est pas
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
La solution est d'ailleurs de remplacer false
par Boolean.FALSE
pour éviter d' null
être déballé boolean
- ce qui n'est pas possible. Mais ce n'est pas la question. La question est pourquoi ? Existe-t-il des références dans JLS qui confirment ce comportement, en particulier du 2ème cas?