Voce precisa fazer o cast pelo menos uma vez...


        for (int i = 0; i < 800000; i++) {
                if (myarray[i] instanceof ClasseA) {
                        ClassA a = (ClassA)myarray[i];
                        a.m();
                        a.a1();
                        ...
                }
        }



Bruno Moreno wrote:
> 
> � isso mesmo. Temos um m�todo em comum o qual ser� invocado dinamicamente.
> Mas em determinado momento, querei lan�ar m�o de particularidades de cada
> classe filha.  Quero fazer isso sem ter um overhead devido ao cast.
> 
> Standing by...  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: Mon, 31 May 1999 13:11:09 -0300
> >
> >
> >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>.
> 
> ______________________________________________________
> 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