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.
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.
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.[/quote]
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:
1- Compares this string to the specified object. The result is {@code true}
2- if and only if the argument is not {@code null}
3- is a {@code* String} object that represents the same sequence of characters as this object.
Já o isEmpty já sabe que irá comparar uma String e faz o processo diretamente.
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.[/quote]
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:
1- Compares this string to the specified object. The result is {@code true}
2- if and only if the argument is not {@code null}
3- is a {@code* String} object that represents the same sequence of characters as this object.
Já o isEmpty já sabe que irá comparar uma String e faz o processo diretamente.
Tchauzin![/quote]
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.
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:
1- Compares this string to the specified object. The result is {@code true}
2- if and only if the argument is not {@code null}
3- is a {@code* String} object that represents the same sequence of characters as this object.
Já o isEmpty já sabe que irá comparar uma String e faz o processo diretamente.
Tchauzin![/quote]
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.
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:
if (objeto.valor() != null && objeto.valor().equals("on"){
system.out.prinltn("ok");
}
Agora seu cogido esta protegido contra qualquer NullPointerException…rsrs
Ate mais
Um NullPointerException ocorre quando chamamos um método a partir de uma referência a ‘null’. Por exemplo:
String s = 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.
Logo, o código está correto:
if (objeto != null && "on".equals(objeto.valor()) {
// código!
}
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.