Voltando ao básico - Qual diferença entre objeto.toString() e typecast (String) objeto  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
venomtotal
Java Ninja
[Avatar]

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
fabim
GUJ Master
[Avatar]

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


[MSN]
fabim
GUJ Master
[Avatar]

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


[MSN]
venomtotal
Java Ninja
[Avatar]

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

fiaux
GUJ Master
[Avatar]

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...
[WWW]
peczenyj
Moderador
[Avatar]

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.'
[WWW]
fiaux
GUJ Master
[Avatar]

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...
[WWW]
peczenyj
Moderador
[Avatar]

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.'
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team