| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:09:04
|
venomtotal
Java Ninja
![[Avatar]](/images/avatar/17ab7b5bb7ca18f6d5f33dfbcbaee1a2.jpg)
Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline
|
Bom, programando em jsf apareceu um problema besta, que me fez retornar ao básico do java.
Qual a diferença entre usar o método .toString() do objeto ou tentar um typecast?
Sendo mais prático:
Agardeço qualquer ajuda
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:13:54
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
(String)objeto é uma tentativa de fazer um downcast, onde vc assume o risco de que o objeto que esta ali com certeza é um String (caso contrario ganhara uma bela ClassCastException.
.toString é qdo vc quer exibir a REPRESENTACAO STRING de um objeto.
Eu poderia pegar um objeto UnidadeFederativa, por exemplo, que tem ID, NOME e SIGLA, e dizer que a representação string dele é:
Dessa maneira, vc passando esse objeto pra um System.out.println por exemlo, ou adicionando o objeto numa comboBox swing, aparecera somente a Sigla.
Se vc nao subsrcrever o .toString na sua classe, ele retornaria algo como unidadefederativa@23d45
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:15:12
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
No seu caso deu NPE pq vc tentou invocar um metodo numa referencia nula.
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:42:25
|
venomtotal
Java Ninja
![[Avatar]](/images/avatar/17ab7b5bb7ca18f6d5f33dfbcbaee1a2.jpg)
Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline
|
fabiocsi wrote:No seu caso deu NPE pq vc tentou invocar um metodo numa referencia nula.
Bom nessa parte acho que entendi, em suma "chamar um metodo em um objeto nulo dá erro, pois estava tentando chamar algo num lugar onde nao existe qualquer coisa"?
Já o do typecast ainda fiquei meio em duvida Pois sempre pensei que ao fazer (String) objeto, o java invocava o .toString() do mesmo.
Qual anologia poderia usar?
falow e grato pela paciencia
This message was edited 4 times. Last update was at 07/08/2008 10:45:14
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:47:48
|
fiaux
GUJ Master
![[Avatar]](/images/avatar/45e7f4b7b70aea2ca2053b78bf65fd2c.png)
Membro desde: 16/06/2006 11:58:29
Mensagens: 1184
Localização: Rio de Janeiro - RJ
Offline
|
Você chamar o método toString de algo que é nulo obviamente vai dar null pointer exception. Fazer cast para de algo para String você tem que estar certo de que aquilo é uma String, ou subclasse dela. Não é a mesma coisa.
|
Necessita-se:
1) Inglês técnico para pesquisas no Google.
2) Português técnico para perguntas e respostas no fórum.
http://www.ffiaux.com
"Após 7,5 milhões de anos processando, o Pensador Profundo responde a Questão Fundamental da Vida, o Universo e Tudo o Mais. E a resposta é: 42"
"Java é uma ilha, Ruby é uma pedra, Phyton é um réptil, C é uma letra e AJAX é um detergente"
Não sou fanático por programação, só trabalho aqui... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 10:51:30
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Agora, String é uma classe final, logo o cast só vai funcionar se for uma String no fim das contas, não?
Só deveria funcionar nesses casos:
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 11:31:17
|
fiaux
GUJ Master
![[Avatar]](/images/avatar/45e7f4b7b70aea2ca2053b78bf65fd2c.png)
Membro desde: 16/06/2006 11:58:29
Mensagens: 1184
Localização: Rio de Janeiro - RJ
Offline
|
Sim, eu não parei para pensar que a String é final, eu pensei foi conceitualmente. Eu nunca vi ninguém querer criar uma subclasse de String anyway...
This message was edited 2 times. Last update was at 07/08/2008 11:37:30
|
Necessita-se:
1) Inglês técnico para pesquisas no Google.
2) Português técnico para perguntas e respostas no fórum.
http://www.ffiaux.com
"Após 7,5 milhões de anos processando, o Pensador Profundo responde a Questão Fundamental da Vida, o Universo e Tudo o Mais. E a resposta é: 42"
"Java é uma ilha, Ruby é uma pedra, Phyton é um réptil, C é uma letra e AJAX é um detergente"
Não sou fanático por programação, só trabalho aqui... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/08/2008 18:05:08
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Claro, claro, só quis dizer que cast de string é um caso bem específico. Geralmente vc faz nesses poucos casos.
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
|
|