Foros del Web » Programación para mayores de 30 ;) » Java »

archivos .class

Estas en el tema de archivos .class en el foro de Java en Foros del Web. Tenía entendido que los archivos .class son los compilados a código entendible por la máquina virtual. Lo que no entiendo entonces es por qué mi ...
  #1 (permalink)  
Antiguo 04/01/2016, 14:46
PaquitoChocolatero
Invitado
 
Mensajes: n/a
Puntos:
archivos .class

Tenía entendido que los archivos .class son los compilados a código entendible por la máquina virtual.

Lo que no entiendo entonces es por qué mi programa crea varios archivos .class con el mismo nombre de la clase, sumándole un $1, $2 al nombre.

Es decir, por ejemplo tengo una clase que se llama MiClase.java

Cuando en el eclipse le doy al play y genera los .class, me genera 4 archivos:

MiClase.class, MiClase$1.class, MiClase$2.class, MiClase$3.class

Por qué pasa esto? ¿Qué contienen?

Al principio dudaba porque no sabía en algunas partes de mi código cuantas instanciaciones se llegaban a hacer de un objeto, y pensaba que quizá se generaría 1 por cada objeto. Pero en otras partes estoy seguro de que de algunos objetos, como por ejemplo un objeto de la clase MiClase... únicamente se crea un objeto durante la ejecución. Y entonces deduje que no era eso, así que sigo sin saber cual es la razón para crear varios objetos .class.
  #2 (permalink)  
Antiguo 04/01/2016, 15:19
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: archivos .class

Hola:

En java es posible crear clases "anónimas", es decir, que no tienen nombre. Un ejemplo típico, no sé si es tu caso, son los ActioListener de los JButton. Imagina el siguiente código dentro de MiClase.java

Código Java:
Ver original
  1. unJbutton.addActionListener(new ActionListener(){
  2.    public void actionPerformed(ActionEvent e) {
  3.         // Hacer algo
  4.    }
  5. });

Aquí, de forma "anónima", se está creando sobre la marcha una clase que implementa ActionListener. Como esa clase no tiene nombre, al compilarla se genera un fichero .class compuesto por el nombre de la clase principal del fichero (MiClase en este caso) y luego un "número", estilo $1, que servirá para distinguir de otras posibles clases anónimas en el mismo fichero. En este ejmplo, se crearía MiClase.class con la clase principal del fichero MiClase.java y MiClase$1.class con la clase anónima que implementa ActionListener.

Si revisas tu código de MiClase.java, posiblemente encuentres tres clases anónimas en algún sitio.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: clase, class, eclipse, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:44.