Comparar String com valor null  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
cmendes
JavaEvangelist

Membro desde: 01/02/2007 16:36:12
Mensagens: 309
Offline

Olá boa tarde. Tenho o código:
public void adiciona (Objeto objeto){

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.
thokk
Virtual Machine Man
[Avatar]

Membro desde: 18/10/2006 17:04:08
Mensagens: 521
Offline


Na vida temos um dia único e feliz. Este dia foi quando conheci minha esposa!!!!
[Email] [MSN]
criador
JavaEvangelist
[Avatar]

Membro desde: 26/05/2008 09:36:00
Mensagens: 332
Offline

Você também pode fazer da seguinte forma:



Abraço!

"O Nerd de hoje é o cara rico de amanhã!". Pense nisso!!!
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

thokk wrote:


Em ambos os casos se o objeto for nulo rola uma NPE neste caso, o melhor seria



Tem a classe StringUtils do commons-lang que possui vários métodos utilitários vale a pena dar uma lida na API

---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
thiago_spdvr
JavaTeenager
[Avatar]

Membro desde: 18/12/2008 21:42:14
Mensagens: 179
Offline

ja pensou em usar o metodo .isEmpty pra verificar se a string está vazia ? ou não seria isso ?

Licenciado em Computação
[Email] [MSN]
thokk
Virtual Machine Man
[Avatar]

Membro desde: 18/10/2006 17:04:08
Mensagens: 521
Offline

thiago_spdvr wrote:ja pensou em usar o metodo .isEmpty pra verificar se a string está vazia ? ou não seria isso ?


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.

Na vida temos um dia único e feliz. Este dia foi quando conheci minha esposa!!!!
[Email] [MSN]
lina
Moderador
[Avatar]

Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline

thokk wrote:
thiago_spdvr wrote:ja pensou em usar o metodo .isEmpty pra verificar se a string está vazia ? ou não seria isso ?


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:

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!

This message was edited 1 time. Last update was at 01/10/2009 16:56:48


Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java

Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]

@gujgirl

http://www.restartfans.hdfree.com.br

Meu blog:

http://www.runthecode.wordpress.com

Tchauzin!
[Email]
eltonads
JavaBaby
[Avatar]

Membro desde: 02/02/2009 09:19:11
Mensagens: 81
Offline

Você pode usar algo assim:



Desse modo, se objeto.valor() for null ou diferente de "on" vai retornar falso no if de qualquer jeito.

Att.,
--



Elton A. dos Santos
Analista / Desenvolvedor de Sistemas Java
Certificado SCJP/SCWCD
Softplan/Poligraph
lina
Moderador
[Avatar]

Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline

eltonads wrote:Você pode usar algo assim:



Desse modo, se objeto.valor() for null ou diferente de "on" vai retornar falso no if de qualquer jeito.

Att.,
--


Oi,

E... se a variavel objeto for null ?

Tchauzin!

Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java

Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]

@gujgirl

http://www.restartfans.hdfree.com.br

Meu blog:

http://www.runthecode.wordpress.com

Tchauzin!
[Email]
eltonads
JavaBaby
[Avatar]

Membro desde: 02/02/2009 09:19:11
Mensagens: 81
Offline

Foi mal.. achei que o problema era só quando objeto.valor() retornasse null...
Nesse caso só um if a mais mesmo e deu... nao tem muito jeito né?!



Att.,
--



Elton A. dos Santos
Analista / Desenvolvedor de Sistemas Java
Certificado SCJP/SCWCD
Softplan/Poligraph
romarcio
JWizard
[Avatar]

Membro desde: 17/12/2008 10:05:49
Mensagens: 2434
Localização: Santa Maria/RS
Offline

lina wrote:
thokk wrote:
thiago_spdvr wrote:ja pensou em usar o metodo .isEmpty pra verificar se a string está vazia ? ou não seria isso ?


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:

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!


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.

Bacharel em Sistemas de Informação.
Oracle Certified Professional, Java SE 6 Programmer

Blog | Facebook | Twitter
[WWW]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

lina wrote:
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!


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

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
Vini Fernandes
Virtual Machine Man
[Avatar]

Membro desde: 20/01/2009 08:43:02
Mensagens: 523
Offline

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

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:


Agora seu cogido esta protegido contra qualquer NullPointerException.....rsrs
Ate mais

This message was edited 1 time. Last update was at 01/10/2009 18:00:28


What do you know about Java? Help me!
[MSN]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Vini Fernandes wrote:

Agora seu cogido esta protegido contra qualquer NullPointerException.....rsrs
Ate mais


Não, se objeto for null, dá null-pointer. O correto seria:


http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Um NullPointerException ocorre quando chamamos um método a partir de uma referência a 'null'. Por exemplo:


No caso, verificamos se a variável objeto é diferente de 'null' e se for, podemos chamar o método:

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:

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team