Página Inicial do Fórum > Java Básico

Cifrão nas classes....



Criar novo tópico   Responder tópico


  1. Orion_lj
    Posts:36


    Comment Arrow

    Publicado em: 04/06/2011 15:55:37

    Fala ae galerinha do java....

    Eu estava num "mini projeto" no NetBeans, tudo ocorreu bem. Quando fui na pasta NetBeansProjects tava la, a classe principal em várias partes... tipo:

    "NomeDaClasse.class";
    "NomeDaClasse$1.class";
    "NomeDaClasse$2.class";
    "NomeDaClasse$3.class";

    Tentei executar tal classe individualmente (NomeDaClasse.class) mas não consegui, obtive um erro que informava que as outras classes não foram encontradas!

    Bom, minha dúvida é a seguinte:

    1ª: Porque as vezes compilo o código-fonte e a classe sai como, por exemplo "NomeDaClasse$1.class";

    2ª: Porque tenho que colocar essas classes com cifrões no mesmo diretório da classe original?;




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 05/06/2011 14:07:36

    a VM do java precisa de um arquivo .class para cada classe que existe no programa.

    Incluindo todas as classes internas e classes anônimas

    portanto, quando você cria uma classe interna, por exemplo



    O compilador vai gerar dois arquivos

    Classe.class e Classe$Interna.class

    o cifrão serve pra dizer que a classe à direita do cifrão, é uma classe interna à esquerda do cifrão. Nesse caso

    Interna é uma classe interna de Classe.


    quando se cria uma classe interna anônima porém, (mais comum em eventos swing)



    Fazendo assim, você criou uma classe anônima para o event action performed do botão, A VM tambem precisa de um .class pra ela

    Sendo assim, o compilador gera os arquivos
    Classe.class e Classe$1.class

    para cada outra classe anonima, ele vai criar Classe$2.class, Classe$3.class, Classe$4.class.... etc



    O netbeans cria classes anônimas para cada evento que você adcionar ao projeto, por isso o compilador acaba criando várias classes nesse formato


    Elas precisam estar todas no mesmo diretório, ou a VM não conseguirá controlar os eventos, porque as classes anônimas estão faltando, gerando um ClassNotFoundException
    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. Orion_lj
    Posts:36


    Comment Arrow

    Publicado em: 04/06/2011 15:55:37

    VALEUUU SEKKUAR..... Brigadão cara....

    Tinha criado um evento dessa forma mas não sabia o porque das classes anônimas... vlw mano, abraços!




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico