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