Pessoal

"Inner classes" e "anonymous inner classes" s�o uma d�vida freq�ente entre os
novatos em Java.
� de fato um aspecto curioso de Java e que merece um estudo cauteloso.

Inner classes s�o classes declaradas dentro de outra classe. Anonymous inner
classes s�o classes declaradas dentro de outra classe sem nome !!
Vejamos o exemplo:

public class PrimeiraClasse {
...
    public Teste getTeste() {
        ...
        return new Teste() {
            public void printTeste() {
                System.out.println("Sobreescrevendo m�todo printTeste da classe
Teste de uma inner class");
            }
        }
    }
}

Explicando a confus�o acima. Uma classe "normal" PrimeiraClasse possui um m�todo
chamado getTeste(). Esse m�todo retorna um objeto da classe Teste. O que � feito
aqui � que no retorno de getTeste(), o return cria um objeto de uma classe que
n�o � Teste, mas extende a classe Teste. Esse objeto � de uma classe que n�o tem
nome(!). No meu exemplo, essa classe Teste extendida, sobrescreve ou implementa o
m�todo printTeste().

Isso gera dois arquivos: PrimeiraClasse.class e PrimeiraClasse$1.class
Al�m disso, podemos ter static inner classes. A diferen�a � que em static inner
classes, o javac n�o cria uma refer�ncia � classe pai. Isso � �til por exemplo
quando vamos serializar um obejto e o enviarmos pela rede. Se mantermos uma
refe�ncia a classe pai, estaremos serailizando toda a classe pai e outra tralhas.
:)

Espero que tenha resolvido o mist�rio das classes$n...

Rodrigo

Tamer Americo wrote:

> me intrometendo no assunto, isto acontece comigo somente quando compilo
> classes que utilizam swing. Geralmente sao gerados uns 3 arquivos class$n.
>
> Eu nao sei o que significa esta innerClass. poderiam me explicar ??
>
> At 10:29 29/02/2000 -0300, you wrote:
> >Rodrigo B Mazzilli wrote:
> >>
> >> Ol�...
> >>
> >> O seu c�digo deve ter em algum ponto a declara��o de uma inner class. A
> >> sintaxe padr�o Java para inner classes �
> >> classeprincipal$InnerClass.class
> >>
> >> Rodrigo
> >
> >Tudo bem, mas pelo o que eu percebi, quando ele coloca um numero, como o
> >exemplo que eu dei (classe$1.class) � pq a Inner class nao tem um nome
> >definido. No meu caso, o compilador esta tratando algo como uma inner
> >class, s� que eu nao quero! O que pode ser?
> >
> >
> >
> _____________________________________________________________________________
> Tamer Americo- Conselho Federal de Medicina - CFM - [EMAIL PROTECTED]
> http://come.to/tamerico - [EMAIL PROTECTED] - ICQ#3221276 - Odigo#16141
>
> "When we are young
> Wandering the face of the earth
> Wondering what our dreams might be worth
> Learning that we're only immortal
> For a limited time"
> Dreamline - Rush
> ____________________________________________________________________________
> _
>
>     --------------------------- LISTA SOUJAVA ---------------------------
>     http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
>     [d�vidas mais comuns: http://www.soujava.org.br/faq.htm]
>     [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
>     ---------------------------------------------------------------------

--
_____________________________________________________________________
Rodrigo B Mazzilli (Mr.) <[EMAIL PROTECTED]>
ICQ# 4106069
_____________________________________________________________________
To get my PGP public key, reply this message
with "get public-key" in the subject field.
---------------------------------------------------------------------
"Computers can never replace human stupidity."


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
    [d�vidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a