style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

ERROR AL COMPILAR UNA CLASE

Saludos ,
Tengo un problema:
Me han pasado un proyecto en web; pero me han pasado el Proyecto.war
a la hora de descompilar todo el proyecto no he tenido ningun problema.
Pero hay una Clase que ha salido con este nombre : ProyectoMejoraController$ModalEstBean.class
Esta bien el nombre ecepto por el $.
Yo quisero saber que se ignifica el $ para cambiarlo de nombre y que este normal sin ese simbolo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

El $ es válido en Java,

El $ es válido en Java, pero generalmente lo crea así cuando se trata de una clase anidada.

Para no darle muchas vueltas, esto es un ejemplo.

class Hola  {
    class Mundo {
     }
}

Si lo compilas tendras: Hola.class y Hola$Mundo.class.

Pero como te decía inicialmente, también puedes tener :

class Nombre$Valido {
}

Sin problema, quizá el error que te sale es por que espera que ese sea una clase anidada.

Espero que te sirva.

Imagen de JaimeItlzc

Se genera al compilar

Se genera cuando compilas tu programa por ejemplo ejecuta este programa y checalo lo que se genera:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Promedio extends Applet{
        public TextField c1,c2,c3,c4;
        public Label e1,e2,e3,e4;
        public Button b1,b2;
        public Frame s;
        public int prom;
       
       
       
        public interfaz(){
               
                s=new Frame("Promedio");
                c1 =new TextField();
                c2 =new TextField();
                c3 =new TextField();
                c4 =new TextField();
                e1 =new Label("U1");
                e2 =new Label("U2");
                e3 =new Label("U3");
                e4 =new Label("promedio");
                b1 =new Button("calcular");
                b2 =new Button("limpiar");
               
        }
        public void add(){
               
               
                s.setLayout(null);
                s.setSize(400,300);
                s.setVisible(true);
               
                s.add(c1);
                c1.reshape(50,60,60,30);
                s.add(c2);
                c2.reshape(130,60,60,30);
                s.add(c3);
                c3.reshape(200,60,60,30);
                s.add(c4);
                c4.reshape(270,60,60,30);
               
                s.add(e1);
                e1.reshape(50,40,60,30);
                s.add(e2);
                e2.reshape(130,40,60,30);
                s.add(e3);
                e3.reshape(200,40,60,30);
                s.add(e4);
                e4.reshape(270,40,60,30);
               
                s.add(b1);
                b1.reshape(110,110,80,30);
                s.add(b2);
                b2.reshape(200,110,80,30);
               
                c1.setVisible(true);
                c2.setVisible(true);
                c3.setVisible(true);
                c4.setVisible(true);
                b1.setVisible(true);
                b2.setVisible(true);
                e1.setVisible(true);
                e2.setVisible(true);
                e3.setVisible(true);
                e4.setVisible(true);
               
               
               
                        b1.addActionListener(new ActionListener(){
                        public void actionPerformed (ActionEvent e){
                                int a = Integer.parseInt(c1.getText());
                                int b = Integer.parseInt(c1.getText());
                                int c = Integer.parseInt(c1.getText());
                                        prom=a+b+c;
                                        c4.setText(String.valueOf(prom));
                        }
                });
                       
                        b2.addActionListener(new ActionListener(){
                        public void actionPerformed (ActionEvent e){
                        c1.setText("");
                        c2.setText("");
                        c3.setText("");
                        c4.setText("");
                                                       
                        }
                });    
        }
        public static void main(String[] args){
               
                Promedio obj=new Promedio();
                obj.add();
                obj.show();
        }
               
}

Imagen de JaimeItlzc

Clases Anidadas

Es como menciona Oscar son clases Anidadas por ejemplo tu haz de tener en tu codigo algo asi:

public class ProyectoMejoraController{ //Clase Principal
     class ModalEstBean{ //clase Anidada
    }  
     //Donde esta el main quien sabe?
}

Entonces cuando lo compilas te va dar algo asi:

ProyectoMejoraController$ModalEstBean.class
ProyectoMejoraController.class

Al parecer van en ese orden. y si dentro de (public class ProyectoMejoraController) hay Clases Internas (Inner class) que no tienen nombre el JDK les asigna un nombre y como serian clases internas de ProyectoMejoraController se les va asignando el $1,$2 y asi y asi y asi.. Son llamadas Clases Internas Anonimas.
Ejemplo:
ProyectoMejoraController$1.class//clase Interna (Anonima)
ProyectoMejoraController$2.class//clase Interna (Anonima)
ProyectoMejoraController$ModalEstBean.class//clase anidada
ProyectoMejoraController.class//clase principal

Saludos.

Imagen de GCORREAGEEK

Gracias!

Gracias mejor explicado no pudo haber estado.
No pense que me prodrian dar solucion a este problemita.
Gracias por haberse tomado la molestia de responder.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">