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