Primeiro, vamos ver se eu entendi.
A sua situacao e' a abaixo?


class SuperClasse {
        SuperClasse m();
}

class ClasseA extends SuperClasse {
        SuperClasse m() {
                return new ClasseA();
        }       
}

class ClasseB extends SuperClasse {
        SuperClasse m() {
                return new ClasseB();
        }
}


Bruno Moreno wrote:
> 
>   Antes de mais nada, gostaria de agradecer sua aten��o bem como a de Rafael
> Chaves.  Infelizmente meu problema � mais s�rio.
>   Tenho conhecimento das maneiras tradicionais de se fazer cast din�mico, ou
> seja, posso utilizar uma interface, uma superclasse ou, at� mesmo, "simular"
> um cast din�mico atrav�s de overload de m�todos.
>   Agora, suponha que tenho v�rias classes com um mesmo m�todo comum que
> retorne uma super-classe.
>    ex: superClass xx.metodo(int j);
>        superClass yy.metodo(int j);
>        ...
>   Este m�todo � chamado in�meras vezes me auxiliando na constru��o
> de um array.
> 
>       for (int i=0; i<800000; i++)
>       {
>         myArray[i]  = xx.metodo(i);
>       }
> 
>      ou
> 
>       for (int i=0; i<800000; i++)
>       {
>         myArray[i]  = yy.metodo(i);
>       }
> 
>   Suponha tamb�m que n�o me interesse trabalhar com a superClasse, mas sim,
> com as suas filhas. Sendo assim, teria que fazer mais 800000 itera��es
> aplicando um cast.  Com o  objetivo de eliminar este cast, gostaria de
> executar um cast na chamada din�mica deste m�todo chamado metodo.
> 
> Desculpe-me se n�o fui muito claro.
> 
> Eu j� possuo este m�todo implementado mas, infelizmente, o overhead ainda
> exite.
> 
> Obrigado,
>    Bruno Moreno
> 
> >From: Eduardo Issao Ito <[EMAIL PROTECTED]>
> >To: Bruno Moreno <[EMAIL PROTECTED]>
> >CC: [EMAIL PROTECTED]
> >Subject: Re: Como fazer um cast din�mico?
> >Date: Thu, 27 May 1999 16:02:55 -0300
> >
> >
> >Se voce sabe a classe a classe que esta sendo retornada basta fazer um
> >cast normal.
> >Caso contrario voce pode usar o operador instanceof para determinar a
> >classe.
> >
> >Mas o jeito mais facil e elegante e voce declarar a variavel apenas como
> >uma interface e chamar os metodos do objeto apenas pela interface.
> >
> >Bruno Moreno wrote:
> > >
> > > Senhores integrantes da lista,
> > >
> > >   Gostaria de saber se algu�m alguma vez fez um cast din�mico.  Estou
> > > fazendo um m�todo gen�rico que em determinado momento, invoca outro
> >m�todo
> > > dinamicamente.  Agora, desejava pegar o meu valor de retorno que � uma
> > > interface e "casti�-la".
> > >   Lan�ando m�o da classe Class e Method eu consigo efetuar a primeira
> >etapa
> > > mas a �ltima, o cast din�mico, n�o fa�o a m�nima id�ia de como
> >implementar.
> > >
> > > Obrigado pela aten��o,
> > >
> > >    Bruno Moreno
> > >
> > > ______________________________________________________
> > > Get Your Private, Free Email at http://www.hotmail.com
> > > * Para nao receber mais e-mails da lista, acesse
> ><http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu
> >e-mail, escolha a lista <[EMAIL PROTECTED]> e de um <submit>.
> >
> >--
> >Eduardo Issao Ito <[EMAIL PROTECTED]>
> >Eurosoft Consultoria <http://www.euroconsult.com.br>
> >Rua Marina Saddi Haidar, 176 - S�o Paulo - SP - Brasil
> >CEP 04650-050
> >TEL: +55 11 524-8022
> >FAX: +55 11 524-0408
> >* Para nao receber mais e-mails da lista, acesse
> ><http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu
> >e-mail, escolha a lista <[EMAIL PROTECTED]> e de um <submit>.
> 
> ______________________________________________________
> Get Your Private, Free Email at http://www.hotmail.com

--
Eduardo Issao Ito <[EMAIL PROTECTED]>
Eurosoft Consultoria <http://www.euroconsult.com.br>
Rua Marina Saddi Haidar, 176 - S�o Paulo - SP - Brasil
CEP 04650-050
TEL: +55 11 524-8022
FAX: +55 11 524-0408
* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a