Einar Saukas wrote:
> 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?
A segunda op��o n�o funciona pelo projeto da linguagem Java! Ou seja isto �
imposto pelo padr�o!
A chamada ao super() dentro do construtor funciona como um "flag" para a MV
Java. Se houver uma
chamada para super() tudo ocorre normalmente, caso n�o haja esta chamada na
primeira linha do construtor, a MV � notificada para chamar o construtor
default da classe Base.
Agora o motivo porque os projetores de Java decidiram por isso - exigir o
super() na primeira linha impossibilitando mesmo a utiliza��o de vari�veis
n�o membros - com certeza foi devido a fatores de complexidade de
implementa��o e performanca. ( da MV)
Espero ter sido claro,
Abra�os,
Fred.
>
>
> 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]
> ---------------------------------------------------------------------
--
Frederico Charles S. Faria
Especialista em Sistemas
INATEL - PRODEP
Fone/Phone: +55 35 471-9280
--------------------------- 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]
---------------------------------------------------------------------