Se eu tenho um objeto, exemplo:
class Objeto
{
public Boolean variavel()
{
return null;
}
}
if( new Objeto().variavel() )
{
...
}
Da NullPointerException ao fazer uma comparação com um IF de uma variavel booleana nula.
Fazendo mais alguns testes verifiquei o seguinte comportamento no construtor da classe Boolean:
public class TesteBoolean
{
static class Teste
{
private Boolean variavel;
public Teste(Boolean variavel)
{
this.variavel = variavel;
}
public Boolean getVariavel()
{
return variavel;
}
}
public static void main(String[] args)
{
Teste a = new Teste(null);
System.out.println(new Boolean(null));
System.out.println("Valor de a.getVariavel() = " + a.getVariavel());
System.out.println(new Boolean(a.getVariavel()));
}
}
Output:
false
Valor de a.getVariavel() = null
Exception in thread "main" java.lang.NullPointerException
at TesteBoolean.main(TesteBoolean.java:27)
Se eu dou um new Boolean(null) com o null explicito o valor fica como false.
Mas, se o null vem de um objeto ocorre NullPointerException! Por que isso?