Recuperando informação sobre um tipo

O uso de polimorfismo está intimamente relacionado ao mecanismo de upcast, onde parte da informação sobre um objeto torna-se inacessível - ou seja, informação é momentaneamente perdida. Esse processo é seguro do ponto de vista da orientação a objetos pois a interface da classe base nunca é maior que a interface da classe derivada.

Há situações onde é interessante recuperar a referência para o tipo original de um objeto, de modo a obter acesso à sua funcionalidade completa. Para tanto, o mecanismo de downcast precisa ser utilizado:

  Ref_orig = (Tipo_orig) Ref_upcast;

O problema com downcasting é que é preciso verificar se o objeto que está tendo sua referência convertida é realmente do tipo especificado, ou caso contrário seria impossível garantir sua manipulação correta após a conversão.

Em Java, todas as operações de downcasting são verificadas através do mecanismo de Run-Time Type Identification (RTTI) suportado pela linguagem. Lembre-se que é possível, para qualquer objeto, obter a indicação de a qual classe ele pertence através do método getClass().


© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Tue Jun 18 14:36:24 BRT 2002