Olá boa tarde. Tenho o código:
public void adiciona (Objeto objeto){
if (objeto.valor().equals("on"){
system.out.prinltn("ok");
}
}
Este “on” vem de um checkbox e funciona perfeitamente qdo o checkbox está marcado. Porém qdo o checkbox não está marcado dá erro de NullPointException porque neste caso a variável está realmente com null. Como então eu resolvo este problema, ou seja, comparar uma String que pode ter valor null?
Grato, Carlos.
Em ambos os casos se o objeto for nulo rola uma NPE neste caso, o melhor seria
if(objeto!=null&&!"".equals(objeto.valor()){
}
Tem a classe StringUtils do commons-lang que possui vários métodos utilitários vale a pena dar uma lida na API
thiago_spdvr
ja pensou em usar o metodo .isEmpty pra verificar se a string está vazia ? ou não seria isso ?
thokk
Creio que ele só verifica se a String esta vazia, mas não como null. Caso queira ver se ela é vazio o padrão é realmente usar o isEmpty(), é melhor que usar utilizando “”, mas usar “” tbm não esta arrado.
lina
Creio que ele só verifica se a String esta vazia, mas não como null. Caso queira ver se ela é vazio o padrão é realmente usar o isEmpty(), é melhor que usar utilizando “”, mas usar “” tbm não esta arrado.
Oi,
Não está errado, porém utilizar equals para comparar se uma String esta vazia, é um processo muito demorado.
O processo equals faz 3 verificações:
Creio que ele só verifica se a String esta vazia, mas não como null. Caso queira ver se ela é vazio o padrão é realmente usar o isEmpty(), é melhor que usar utilizando “”, mas usar “” tbm não esta arrado.
Oi,
Não está errado, porém utilizar equals para comparar se uma String esta vazia, é um processo muito demorado.
O processo equals faz 3 verificações:
Já o isEmpty já sabe que irá comparar uma String e faz o processo diretamente.
Tchauzin!
Interessante isso que a Lina postou, eu particularmente não sabia como o equals executava essa comparação. Mas geralmente se vamos testar se um objeto é null, se usa o isEmpty, isso aprendia ainda no PHP, hehe.
Mas parece que já resolveu seu problema sem isso, mas vale o teste.
G
garcia-jj
lina:
Oi,
Não está errado, porém utilizar equals para comparar se uma String esta vazia, é um processo muito demorado.
O processo equals faz 3 verificações:
Já o isEmpty já sabe que irá comparar uma String e faz o processo diretamente.
Tchauzin!
Lina, você não tem noção o quanto eu brigo quando vejo programador fazendo comparação com equals(""). Além de feio você faz essas verificações denecessárias enquanto o length() == 0 faz o mesmo trabalho. Aliás a implementação String.isEmpty() (pós Java 6) usa length == 0.
Abraços
Vini_Fernandes
Ola cmendes, acredito que esse NullPointer nao seja pelo fato que seu checkbox nao tenha sido checado, mas sim porque objeto.valor() esteja nulo. Por exemplo, nao tem problema algum fazer a seguinte comparacao
"minhaString".equals(null);
pois teremos como retorno “false”, já que toda implementacao de equals deve retornar “false” quando o parametro esteja nulo. Sendo assim, recomendo voce fazer o seguinte:
Um NullPointerException ocorre quando chamamos um método a partir de uma referência a ‘null’. Por exemplo:
Strings=null;System.out.println(s.length());
No caso, verificamos se a variável objeto é diferente de ‘null’ e se for, podemos chamar o método:
"on".equals(objeto.valor());
Podemos fazer isso tranquilamente, pois chamamos o método ‘equals’ da String “on”, que nunca será ‘null’. E como sabemos que ‘objeto’ é diferente de ‘null’, podemos chamar seu método sem problemas.
Mesmo que o método ‘objeto.valor()’ retorne ‘null’, nesse caso, não haverá NullPointerException.
Correto marcobiscaro2112, porem esse “ok” é dinamico no caso do proprietario do post!
M
marcobiscaro2112
Como assim? O “ok” é apenas mostrado na saída do console se a comparação for verdadeira. E pelo que me parece, tanto o “ok” quanto o “on” são sempre fixos.