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>.