Em linhas gerais, o NullPointerException é uma exceção lançada pelo Java quando um programa tenta acessar um objeto de memória que não foi instanciado (ou melhor, inicializado) até o momento de sua chamada. O que isso quer dizer? O objeto ainda está nulo, ele não tem um valor definido.
Causas para geração da exceção
Este tipo de exceção é detectado quando o programa tenta, em tempo de execução, realizar algo do tipo:
- Acessar métodos de objetos que estão nulos.
- Alterar ou visualizar atributos de objetos nulos.
- Verificação de tamanho (length) de um array ainda nulo
- Modificação de campos de um array nulo
- Lançar uma exceção como se ela fosse throwable (“lançável”).
Erros comuns cometidos por iniciantes
Um erro comum é pensar que atribuir o inteiro 0 (zero) para uma variável é interpretado como nulo, o que não é verdade, pois 0 é um valor e sendo um valor ele estará sendo interpretado como tal. Um inteiro será realmente vazio quando ele não receber nenhum valor e neste caso será alocado um “pedaço” de memória que não conterá nada, será então, null.
Em java, tudo é na forma de classe. Desta forma, se você pretende usar qualquer de seus objetos, você sempre terá que executar duas coisas importantes.
A primeira delas é a declaração de suas variáveis e a segunda é a inicialização delas! Basicamente:
Declaração de variável: int a, int idade, float valor;
Com arrays é a mesma coisa.
Declaração: Produto p[] = new Produto[5];
Inicialização: p[0] = new Produto();
Um exemplo em código:
public static void main(String[] args) {
String nomeCompleto;
System.out.print(nomeCompleto);
}
Neste exemplo, temos uma variável “nomeCompleto” que está sendo declarada, mas.. onde está sendo feita a inicialização?
Eis um caso em que teremos a nossa boa e velha mensagem de NullPointerException.
Dica: Tentem sempre criar validações antes de usar os métodos.
Exemplo do caso acima:
public static void main(String[] args) {
String nomeCompleto;
If(nomeCompleto != null){
System.out.print(nomeCompleto);
}else{
System.out.print(“Erro ao apresentar o nome”);
}
}
Links Úteis
- Curso básico de Java Aplicado:
O objetivo do curso de Java Básico aplicado é apresentar os conceitos básicos da linguagem de programação Java. - Formulário de cadastro com JSF e Bootstrap:
Aprenda neste exemplo como criar interfaces ricas com Bootstrap e JSF. Saiba como o Pass-through elements pode te ajudar a ter mais controle sobre o HTML gerado pelos componentes nativos. - Web services RESTful: Como adicionar segurança com JWT:
Este artigo apresenta um novo padrão, denominado JSON Web Token (JWT), para a criação de tokens capazes de transportar informações de uma forma compacta e confiável.