Quem aqui já programou em java, certamente já viu o erro: java.lang.NullPointerException. Pois bem, vamos para um exemplo:
public class Pessoa { private Long id; private String nome; private Endereco endereco; public Endereco getEndereco() { return endereco; } public Long getId() { return id; } public String getNome() { return nome; } public void setEndereco(Endereco endereco) { this.endereco = endereco; } public void setId(Long id) { this.id = id; } public void setNome(String nome) { this.nome = nome; } }
public class Endereco { private Long id; private String rua; private String numero; private String bairro; private String cidade; public String getBairro() { return bairro; } public String getCidade() { return cidade; } public Long getId() { return id; } public String getNumero() { return numero; } public String getRua() { return rua; } public void setBairro(String bairro) { this.bairro = bairro; } public void setCidade(String cidade) { this.cidade = cidade; } public void setId(Long id) { this.id = id; } public void setNumero(String numero) { this.numero = numero; } public void setRua(String rua) { this.rua = rua; } }
public class Teste { public static void main(String[] args) { Pessoa aluno = new Pessoa(); System.out.println("Rua: " + aluno.getEndereco().getRua()); } }
Executando este código, temos o seguinte retorno no console:
Exception in thread "main" java.lang.NullPointerException at br.com.karanalpe.main.Teste.main(Teste.java:9)
Como evitar?
No trabalho brincamos que o sistema é orientado a NullPointerExcepetion. Então, foi sugerido realizar uma alteração em todas as entidades para resolver de vez esse problema. Esta, consiste em declarar 2 construtores para cada entidade da seguinte forma:
public Pessoa() { this(-1L, "", new Endereco()); } public Pessoa(Long id, String nome, Endereco endereco) { super(); this.id = id; this.nome = nome; this.endereco = endereco; }
public Endereco() { this(-1L, "", "", "", ""); } public Endereco(Long id, String rua, String numero, String bairro, String cidade) { super(); this.id = id; this.rua = rua; this.numero = numero; this.bairro = bairro; this.cidade = cidade; }
Fazendo essa alteração, conseguimos rodar sem problemas o nosso main. Vejamos o console:
Rua:
Nota: Partimos do pressuposto que ao dar um New em determinado objeto, o mesmo deve existir, mesmo apresentando informações em branco. Fazendo essa simples alteração , conseguimos garantir isso!
Fim 🙂