Classes gerando com $

3 respostas
javanetbeansprogramaçãomysql
fabianomaca

Tenho um projeto em Java e percebi que algumas classes quando eu compilo o projeto ela gera outras classes mais com $ no nome como no exemplo abaixo.

mb_envia_email$1.class
mb_envia_email$2.class
mb_envia_email$3.class

A classe original e oficial é mb_envia_email.class mas são geradas essas outras. Se eu deleto, ao reconstruir, elas são recriadas também.

Alguém pode ajudar a entender o porque disso e como resolver?

Desde já, obrigado.

3 Respostas

ClockWork

isso e normal acontecer pois deve aver mais de um função no seu codigo ou mais de uma classe ou algum action listener mais isso e completamente normal ser gerado.

rmendes08

Esse é o código gerado pelas chamadas classes anônimas. São classes declaradas “inline” no seu código. No caso do Java 8, cada uma destas classes pode ser equivalente a um lambda, já que internamente um lambda é convertido para uma classe anônima. Sendo assim, não apague estes arquivos gerados, senão o seu código não vai funcionar.

staroski

Classes internas, classes anônimas e lambdas tem o seu bytecode gerado em um .class específico.
Então se você tem:

seu.pacote.SuaClasse.ClasseInterna

Serão gerados dois bytescodes:

seu/pacote/SuaClasse.class
seu/pacote/SuaClasse$ClasseInterna.class

No caso de classes anônimas e/ou lâmbdas, o nome será substituído por um número correspondendo à ordem em que aparecem no fonte, exemplo:

seu/pacote/SuaClasse.class     // classe externa
seu/pacote/SuaClasse$0.class   // primeira classe anônima ou lâmbda
seu/pacote/SuaClasse$1.class   // segunda classe anônima ou lâmbda
seu/pacote/SuaClasse$2.class   // terceira classe anônima ou lâmbda
Criado 4 de dezembro de 2017
Ultima resposta 26 de dez. de 2017
Respostas 3
Participantes 4