'
        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