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 🙂