Ricardo Muneo Kayo wrote:
> 
> Vc jah tentou usar essa classe com a sua ultima implementacao(4a. do
> email)? Funcionou???

        Sim, funcionou.


> Pelo que eu entendi, vc quer fazer uma heranca multipla em JAVA, meio
> mascarado, nao eh??? Acho que nao vai funcionar!!!

        Não, eu simplesmente queria fazer uma herança simples da classe
ObjectOutputStream mesmo. A única dificuldade é que eu preciso preservar
o parâmetro que eu estou passando para o construtor dessa classe.

        É bastante razoável que minha primeira opção não funcione, porque
eu não posso mesmo acessar variáveis da instância antes de inicializar a
base. Mas quanto à segunda opção (usar variáveis temporárias antes de
inicializar a base), eu não vejo nenhum motivo para isso não funcionar,
porque afinal de contas tais informações ficam armazenadas na pilha e
não na área de memória da instância.

        Tem alguém nessa lista de discussão que acompanhe mais de perto
o processo de padronização do Java (Bruno?) e saiba dizer se tem algum
motivo para essa restrição? Será que isso é imposto pelo padrão ou
simplesmente uma particularidade da implementação atual do JDK?

        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