Null pointer [RESOLVIDO]

6 respostas
P

Olá pessoal...

Por acaso vocês saberiam me informar o pq de estar dando Null Pointer? No campo "imei"
di = conn.prepareStatement(SQL_SIMCARD_UPDATE_DISP_A);
			di.setInt(1, CodigoProcessamento(fonte));
			di.setInt(2, tecnologia);
			di.setInt(3, apnConfigurada);
			di.setString(4, ip);
			if (porta.equals(null) || porta.equals("")){
				porta = "26";
				di.setString(5, porta);
			} else {
				di.setString(5, porta);
			}
			if (imei.equals(null) || imei.equals("")){ // AQUI ESTA DANDO NULL POINTER
				imei = "26";
				di.setString(6, imei);
			} else {
				di.setString(6, imei);
			}
			di.setTimestamp(7,
					new java.sql.Timestamp(new java.util.Date().getTime()));
			di.setString(8, dispositivo);
			di.executeUpdate();
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			ConnectionManager.fecharConexao(conn, null, sd);
			ConnectionManager.fecharConexao(conn, null, di);
		}

		return atualiza;
	}
ERRO:
java.lang.NullPointerException
	at br.com.simcard.dao.PlanilhaCtrDAO.simCardVerificaUpdateCtr(PlanilhaCtrDAO.java:214)
	at br.com.simcard.VerificarRegistroCtr.VerificadorCtr(VerificarRegistroCtr.java:66)
	at br.com.simcard.VerificarRegistroCtr.<init>(VerificarRegistroCtr.java:38)
	at br.com.simcard.Upload.anexos(Upload.java:50)
	at servlet.br.com.simcard.ServletUpload.doPost(ServletUpload.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.

6 Respostas

Hebert_Coelho

Seu teste está errado, esse é o correto: imei == null

P

Hebert Coelho
Funcionou cara… vc poderia me dizer o pq??

Pois estou usando em outros lugares esse .equals(null)
Mas no soutros lugares estão funcionando.

Hebert_Coelho

imei == null é diferente de imei.equals pois quando você faz . alguma coisa você tenta acessar o que está dentro da variável.

Nesse caso, o imei é null e ele não tem nada. ao tentar fazer imei.equals seria o mesmo que null.equals e aí vem o nullpointer. null não “aponta” para nada. ^^

Pode ter certeza que nos outros lugares funciona pois não passou nenhum cara null ainda. Envia null pro c v. ^^

P

entendi…

sobre a questão do equals("") é o mesmo sentido?

então é melhor eu mudar todas as condições para == null e == “” ?

Hebert_Coelho

Pacato:
entendi…

sobre a questão do equals("") é o mesmo sentido?

então é melhor eu mudar todas as condições para == null e == “” ?

Não.

Nunca, mas nunca mesmo, compare uma classe com outros valores utilizando ==.

Grosseiramente definindo, todas as classes do java que começam com letra maiúscula e as classes que você cria:
Integer, Long, Double, String, Carro, Farinha, SprayAntiUrso

O modo correto de se comprar uma classe com qualquer valor deve ser com equals. numero == null && numero.equals(0) por exemplo.

Se deve utilizar == quando quer saber que uma variável está null OU com atributos simples do java, que comecem com letra minúscula. int, double, char… boolean == true por exemplo

P

Tem uns lugares que uso

Pegando um valor de um método:
ctr.getSimcard().equals(null) || ctr.getSimcard().equals("")

E no caso anterior são valores imei, porta, são valores, então eu troquei para == “” ou == null

Criado 7 de novembro de 2012
Ultima resposta 7 de nov. de 2012
Respostas 6
Participantes 2