Cliente c = (Cliente) obj

4 respostas
adrianogf

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

4 Respostas

_fs

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.

Diogenes

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…

adrianogf

Unnn…agora clreou as ideias… :stuck_out_tongue:

Pessoal, muito obrigado :smiley:

F

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

Criado 11 de fevereiro de 2005
Ultima resposta 12 de fev. de 2005
Respostas 4
Participantes 4