Estou começando a estudar java para Web e me deparei com o seguinte problema:
Exception in thread “main” java.lang.NullPointerException
at java.util.Calendar.setTime(Unknown Source)
at br.com.caelum.jdbc.dao.ContatoDAO.getLista(ContatoDAO.java:57)
at br.com.caelum.jdbc.teste.TestaLista.main(TestaLista.java:17)
Acusando um erro na linha 57 da minha classe DAO, porém não vejo nenhum erro na linha. Segue abaixo o trecho de código que o Eclipse esta acusando o erro:
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
Carinha, NullPointerException é sempre quando você está tentando fazer alguma coisa com uma variável que está presentemente com o valor nulo.
Portanto, tenho os seguintes candidatos para você ver o problema:
Se você olhar o topo do stacktrace, você percebe que o programa entrou no “setTime”. Portanto, minha teoria é que a data que você está mandando para o setTime está nula.
Sugestão:
acrescente este código para verificar se isto é verdade. Deste modo você poderá na depuração ver se a data está realmente vindo nula.
Calendar data = Calendar.getInstance(); Date d = rs.getDate(“dataNascimento”);
data.setTime(d);
contato.setDataNascimento(data);
Uma possível solução para o problema é verificar se a data estiver nula, lançar algum tipo de exceção ou efetuar um tratamento específico…
Normalmente eu prefiro designar valores a variáveis e depois utilizá-las, ao invés de invocar métodos diretamente. Embora isto acrescente um (minúsculo) acréscimo de uso de memória, você ganha em vários pontos:
**IMPORTANTE ** Fica mais fácil depurar o código, pois é possível ver aonde os problemas estão acontecendo.
Em situações onde você tem que chamar o método repetidas vezes para pegar o mesmo valor, você ganha performance.