Chamada de Interfaces em Java com parenteses

Caros,

Crei uma interface chamada EstoqueRMI e na chamada desta interface temos o seguinte trecho de cód:

EstoqueRMI estoque = (EstoqueRMI) Naming.lookup("rmi://localhost:1099/estoque");

Poderiam dizer o motivo da chamada da interface estar entre parenteses “(EstoqueRMI)”?

Obrigado.

Naming.lookup retorna referência ao objeto. Ao colocar o “(EstoqueRMI)” você está dizendo que este objeto retornado é deste tipo em específico

1 curtida

Muito obrigado Danielzilli
abraços.

O nome disso é casting ou simplesmente cast.

Suponha que você tem as seguintes classes:

class TipoGenerico {}

class TipoEspecifico extends TipoGenerico {}

E você tem o seguinte método:

public TipoGenerico retornaAlgoGenerico() {
    // Observe que mesmo o retorno sendo TipoGenerico é retornado um TipoEspecifico.
    return new TipoEspecifico();
}

E você quer atribuir o retorno desse método à uma variável do tipo TipoEspecifico, como a assinatura do método retorna um TipoGenerico, a linha abaixo vai causar erro de compilação.

TipoEspecifico objeto = retornaAlgoGenerico();

Aí você consegue numa boa fazer o seguinte:

TipoGenerico objeto = retornaAlgoGenerico();

Mas você precisa chamar um método declarado na classe do TipoEspecifico, aí o código abaixo não vai compilar:

TipoGenerico objeto = retornaAlgoGenerico();
objeto.metodoEspecifico(); // esse método não existe no TipoGenerico

Qual a solução? Fazer um cast para TipoEspecifico:

TipoEspecifico objeto = (TipoEspecifico) retornaAlgoGenerico();
objeto.metodoEspecifico(); // esse método existe no TipoEspecifico
3 curtidas

Eu gosto das suas explicações, hein.

Boa staroski!!!

Agradeço pelo nível de detalhes, foi bem esclarecedor.

Você consegue me ajudar tbm com a dúvida do tópico: Dúvidas sobre RMI e Serialização ?

Abs