Fabio Ramon wrote:
> 
> Einar,
> 
> Infelizmente eu tambem so' consigo imaginar a solucao que voce chamou de
> pessima. Alias, se o atributo _bos pode
> ser est�tico, talvez ele n�o precise ser atributo da classe e voc� pode
> simplesmente o alocar:
> 
> super(new ByteArrayOutputStream());
> 
> isso nao serve para voce ?

        Isso n�o serve, porque se eu fizer desse jeito, n�o tenho mais
como acessar mais a inst�ncia de ByteArrayOutputStream que eu estou
repassando para a classe base. Eu preciso manter uma refer�ncia a essa
inst�ncia para us�-la depois em um outro m�todo novo da minha classe.

        E quanto ao truque do atributo static, na solu��o 3 ele era
usado apenas como tempor�rio, mas no final do construtor esse valor
era copiado para a vari�vel de inst�ncia. Mas como eu j� disse em
outro email, usar static � uma m� id�ia.

        Portanto obrigado tamb�m pela tentativa, mas o problema
continua em aberto...

        Um abra�o,

Einar Saukas
Technical Consultant
Summa Technologies, Inc.
http://www.summa-tech.com


> Einar Saukas wrote:
> > 
> >         Oi pessoal!
> >
> >         Encontrei um problema interessante no projeto em que estou
> > trabalhando, ser� que algu�m tem alguma sugest�o? Minha inten��o
> > era fazer uma classe assim, s� que n�o funciona:
> >
> > class MessageOutputStream extends ObjectOutputStream {
> >   private ByteArrayOutputStream _bos;
> >   MessageOutputStream() throws java.io.IOException {
> >     super(_bos = new ByteArrayOutputStream());  // ERRO!
> >   }
> > }
> >
> >         Todas as outras solu��es semelhantes que eu consegui imaginar
> > tamb�m n�o funcionam, como essa por exemplo:
> >
> > class MessageOutputStream extends ObjectOutputStream {
> >   private ByteArrayOutputStream _bos;
> >   MessageOutputStream() throws java.io.IOException {
> >     ByteArrayOutputStream tmp = new ByteArrayOutputStream();
> >     super(tmp);  // ERRO!
> >     _bos = tmp;
> >   }
> > }
> >
> >         Na verdade, existe uma �nica variante que funciona, mas �
> > uma p�ssima solu��o:
> >
> > class MessageOutputStream extends ObjectOutputStream {
> >   static ByteArrayOutputStream tmp;
> >   private ByteArrayOutputStream _bos;
> >   MessageOutputStream() throws java.io.IOException {
> >     super(tmp = new ByteArrayOutputStream());
> >     _bos = tmp;
> >   }
> > }
> >
> >         Por isso, a solu��o que eu acabei adotando foi deixar parte
> > da inicializa��o para ser feita pelo "cliente" da classe:
> >
> > class MessageOutputStream extends ObjectOutputStream {
> >   private ByteArrayOutputStream _bos;
> >   MessageOutputStream(ByteArrayOutputStream bos)
> >       throws java.io.IOException {
> >     super(bos);
> >     _bos = bos;
> >   }
> > }
> >
> >         Em todo caso, se algu�m tiver alguma id�ia de como implementar
> > minha inten��o original, eu agrade�o. Eu acho que n�o tem muito jeito,
> > mas n�o custa nada perguntar...
> >
> >         Um abra�o,
> >
> > Einar Saukas
> > Technical Consultant
> > Summa Technologies, Inc.
> > http://www.summa-tech.com


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a