Pessoal estou iniciando em java e sou novo aqui no forum. Estou confuso com a expressão abaixo. Alguem poderia me ajudar?
Cliente c = (Cliente) obj;
Porque o ()???
Desde ja agradeço a atenção
Pessoal estou iniciando em java e sou novo aqui no forum. Estou confuso com a expressão abaixo. Alguem poderia me ajudar?
Cliente c = (Cliente) obj;
Porque o ()???
Desde ja agradeço a atenção
Esta sintaxe indica o chamado casting.
Vou completar o código para exemplificar melhor:
public void meuMetodo( Object obj )
{
Cliente c = ( Cliente ) obj;
System.out.println( c.getEndereco() );
}
Nesse exemplo (ruim), você sabe que obj é uma instancia de Cliente, portanto faz o cast de Object para Cliente.
Caso o ‘obj’ não fosse uma instância de Cliente, uma ClassCastException seria lançada.
Isso se chama casting…
Vc tem um objeto de um supertipo e informa que ele deve ser convertido para um outro tipo específico, no caso, Cliente…
Uma maneira simples de entender isso eh pensar em no relacionamento entre um Medico e um Cardiologista…
Um Cardiologista sempre será um Medico, mas um Médico não necessariamente eh um Cardiologista…
Medico medico = new Medico("Dr. Adriano"); //Obtenho meu objeto Médico;
...
/*
Aquih, com a utilização do casting, vc afirma que esse médico eh um Cardiologista, e nao outro tipo de médico
*/
Cardiologista cardiologista = (Cardiologista) medico;
Eh basicamente isso…
Unnn…agora clreou as ideias… 
Pessoal, muito obrigado 
Enchendo o saco do Lipe, mas evitando um ClassCastException. :lol:
Pelo exemplo do Lipe, tu ainda poderia fazer assim.
public void meuMetodo( Object obj )
{
if (obj instanceof Cliente) {
Cliente c = ( Cliente ) obj;
System.out.println( c.getEndereco() );
} else {
System.out.println( "O Objeto obj não é uma instancia de Cliente!" );
}
}
O operador instanceof verifica se o Objeto obj realmente é uma instancia de Cliente, isso evita problemas de exception na hora do Casting.
]['s