comparação de valores[RESOLVIDO]

4 respostas
R

Olá,
estou tentando fazer um condicional mas está um pouco complicado.
Criei um obj chamado Usuario que guarda dentro de si um obj chamado Endereco (@OneToOne).
Preciso fazer uma consulta no banco de dados e trazer os usuarios e seus respectivos endereços, caso não tenha endereço cadastrado, não aparecerá nada no campo endereço.
O condicional está desta forma:

if(usuario.getEndereco().getId() > 0){ System.out.println(usuario.getEndereco().getId()); }

mas quando o usuario não tem nenhum registro na tabela endereço ele dá um erro:

Exception in thread “main” java.lang.NullPointerException
at br.com.stenovoice.teste.TrazerTudo.main(TrazerTudo.java:14)

Entendi o porque está errado, mas não consigo pensar em uma outra forma de fazer esta comparação.
Alguem pode me ajudar?

4 Respostas

Lavieri

if(usuario.getEndereco() != null && usuario.getEndereco().getId() > 0){ System.out.println(usuario.getEndereco().getId()); }

nesse caso ele vai verificar se é nulo, se for já sai do if … se não for nulo, ele verifica se o ID é maior que 0, se for imprime, se não sai do if

Andre_Fonseca

Lavieri:
if(usuario.getEndereco() != null && usuario.getEndereco().getId() > 0){ System.out.println(usuario.getEndereco().getId()); }

nesse caso ele vai verificar se é nulo, se for já sai do if … se não for nulo, ele verifica se o ID é maior que 0, se for imprime, se não sai do if

Oi,

só toma cuidado com uma coisa, se o objeto usuário for nulo ao tentar fazer usuario.getEndereco você terá um NullPointerException

então para garantir isso

if(usuario!=null && usuario.getEndereco() != null && usuario.getEndereco().getId() > 0){ System.out.println(usuario.getEndereco().getId()); }

Lavieri

André Fonseca:

Oi,

só toma cuidado com uma coisa, se o objeto usuário for nulo ao tentar fazer usuario.getEndereco você terá um NullPointerException

então para garantir isso

if(usuario!=null && usuario.getEndereco() != null && usuario.getEndereco().getId() > 0){ System.out.println(usuario.getEndereco().getId()); }

sim sim ^^ … mas eu me basiei no post dele conforme trecho abaixo…

onde fala que o problema é um usuario sem endereço ^^ … e não um usuario inexistente…
vc ficar fazendo muitos testes de nulidade as vezes polui o código =x

R

Me basiei na versão do Lavieri e fiz da seguinte forma:

if(usuario.getEndereco() != null){
          System.out.println(usuario.getEndereco().getId());
}

Valeu rapaziada, até mais!!

Criado 17 de fevereiro de 2009
Ultima resposta 17 de fev. de 2009
Respostas 4
Participantes 3