'
        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