Olá pessoal!
Queria que vocês me dessem uma dica a respeito de um probleminha que estou tendo com null pointer…
No meu sistema de inclusão de login e senha eu verifico o login se já existe. Porém caso for a 1ª inclusão na tabela ou não existe o login informado, a consulta retorna nula é claro, então vem o null pointer. Então gostaria de saber o que posso fazer para mudar isso, para não ter essa exception.
NullPointerException ocorre quando você tenta acessar uma referencia nula, então pra evitar simplesmente não acesse uma referencia nula, veja:
[code]String str = null;
str.toUpperCase(); //NullPointerException
//pra evitar
if(str!=null){
str.toUpperCase();
}[/code]
vc pode colocar um if pra verificar se o retorno é null dai so então fazer a compraração…
if( rs.getString( "CAMPOSENHA" ) != null ) {
valida a senha....
}
esse é a maneira mais simples eu acho, se vc postar o código será melhor pra alguem apresentar uma solução mais adequada…
Eu já usei o if (str.equals(null)) e mesmo assim deu NullPointer
nesse caso acho q vc deve utilizar if(rs.getString(“senha”) != null)
pois usando o metodo equals ele vai tentar comparar a string com null e dara NullPointerException novamente
vc pode tratar no select tambem
select usuario, coalesce(senha, ‘’) from tabela …
A condição obj.equals(null) sempre vai dar false. Tem que comparar com == ou !=
Só pra esclarecer: um objeto nunca é nulo, o que é nulo é a referencia, e se a referencia é nula como você pode chamar um metodo dela? (isso inclui o equals())… quando você chamar o equals() vai lançar NullPointerException nele…
equals() compara objetos, o que compara referencias é == e !=
Segue o código
try {
service = (ClienteService) ServiceFactory.getService(ClienteService.class);
cliente = service.consultarByCnpjCpf(cnpfCpf);
if(cliente.getCnpjCpf()!= null){
if(cnpfCpf==cliente.getCnpjCpf()){
JOptionPane.showMessageDialog(null, "CNPJ ou CPF existente!" +
"\nDigite novamente!", "Mensagem", JOptionPane.ERROR_MESSAGE);
erro = true;
}else{
erro = false;
}
}else{
erro = false;
}
} catch (SystemSifiException ex) {
ex.printStackTrace();
} catch (SifiException ex) {
ex.printStackTrace();
} catch (NullPointerException ex) {
ex.printStackTrace();
erro = false;
}
Eu mudei de equals para == ou != e continuou…
java.lang.NullPointerException
olha esses 2 ifs
para comparar com == podem ser inteiros, double booleans etc… ou quando você que comparar um objeto com null. no método cliente.getCnpjCpf() ele retorna oque? Uma String? se for uma String você tem que comparar assim
if(cnpfCpf.equals( cliente.getCnpjCpf() ) ){
essa exception tb pode estar sendo lançada por esses 2 objetos
service ou cliente. Caso em algum desses métodos estejam retornando null. Se você tentar chamar um método em uma referência que está apontando para null ele lança essa nullpointerexception em tempo de excução. Tenta imprimir o objeto service e o objeto cliente com um System.out e ve se algum deles aparece como null.
Eu já fiz usando equals e == e sempre dá nullpointer
[quote]service = (ClienteService) ServiceFactory.getService(ClienteService.class);
cliente = service.consultarByCnpjCpf(cnpfCpf);[/quote]
Provavelmente seu problema está aí, alguma dessas referencias está nula…
ele esta dando NullPointerException porque ou a referencia service ou a referencia cliente está null, então quando se tenta acessar algum metodo da a exeção…
Coloca um System.out.println(service) antes de acessar o metodo da classe service e outro antes de acessar cliente pra que vc vai descobrir qual esta ficando null…
Problema resolvido!
O erro é que eu não poderia fazer dessa forma:
fornecedor.setId==null
E sim assim:
fornecedor==null