Einar Saukas wrote:

> "Frederico Charle S. Faria" wrote:
> >
> > 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)
>
>         Muito obrigado pelas informa��es, mas eu conhe�o um pouco sobre
> t�cnicas de compila��o e n�o vejo porque a utiliza��o de vari�veis
> locais afetaria significativamente a implementa��o e muito menos a
> performance. Afinal de contas, para um compilador, esse trecho de c�digo:

Primeiramente voce entendeu errado!  A perda de performance e a dificuldade de
implementa��o
n�o se referem a utiliza��o de vari�veis locais , mas sim a decis�o de projeto
dos fundadores do Java
,ou seja,  exigir que o super() seja o primeiro comando do construtor.
Espero que perceba a diferen�a, e veja que se fosse de maneira contr�ria a
implementa��o seria mais  dif�cil e a
performance com certeza mais pobre!!!

>
>
> MessageOutputStream() throws java.io.IOException {
>   ByteArrayOutputStream tmp = new ByteArrayOutputStream();
>   super(tmp);  // ERRO!
> }
>
>         Tem praticamente a mesma complexidade deste aqui:
>
> MessageOutputStream() throws java.io.IOException {
>   super(new ByteArrayOutputStream());
> }
>
>

Voce est� errado! Isto depende da implementa��o do Compilador.. Para C++ , por
exemplo, existem
v�rias implementa��es diferentes para isso! Vejo o livro do Meyers, ele cita
exemplos de implementa��o
deste tipo. Tem compiladores que usam algumas t�cnicas de otimiza��o quando �
utilizada esta �ltima constru��o.
Talvez alguns  compiladores  Java utilizem esta mesma t�cnica.


>         � primeira vista, o compilador s� tem que ser um pouco mais
> cuidadoso na manipula��o da pilha de execu��o, mas isso parece ser
> muito f�cil de resolver. Ser� que tem algum outro fator que eu n�o
> percebi?
>

� f�cil de perceber que � mais ineficiente... Imagine um construtor com v�rias
chamadas de m�todos
aninhados, com a implementa��o corrente basta para o compilador  analisar a
primeira linha do construtor.
Se n�o fosse assim o compilador teria que analisar toda a a�rvore de m�todos
aninhados para
garantir que n�o houvesse nenhuma referencia a algum atributo da classe antes da
chamada do super.
Mais mem�ria e mais processador!!.  Este � um simples exemplo...

Abra�os,
Fred.

>
>         Um abra�o,
>

Abra�os,
Fred.

>
> 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]
    ---------------------------------------------------------------------

Responder a