Booleanos, operadores condicionais e caixa automática
Por que isso jogaNullPointerException
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;
}
enquanto isso não
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
A solução é a maneira de substituirfalse
porBoolean.FALSE
evitarnull
sendo desembalado paraboolean
- o que não é possível. Mas essa não é a questão. A questão éporque? Há alguma referência no JLS que confirme esse comportamento, especialmente no 2º caso?