Java – Al compilar me aparece *$1.class ¿Que és?

[notice]Desde que este post fue creado han pasado 8 años así que puede que hayan cambiado cosas.[/notice]

Al crear una aplicación Java, el compilador nos genera archivos .class que luego usará la máquina virtual de Java para ejecutar el programa. Pero si vamos a la carpeta bin donde encontramos los binarios, puede que nos encontremos alguna clase tipo «miclase$1.class».

¿Que es este archivo?

Es el archivo compilado de una anonymous class.

¿De donde ha salido?

Siempre que en el código de una clase creemos una nueva clase (ya sea para ordenar, o otras clases que hayamos creado), como podemos ver en el siguiente ejemplo. Este código es parte de una implementación de un método de otra clase.

Arrays.sort(idAssig, new Comparator<String[]>()  {
	@Override
	public int compare(final String[] entry1, final String[] entry2 ) {
		final String tmpCurs1 = entry1[10];
		final String tmpCurs2 = entry2[10];
		return tmpCurs2.compareTo(tmpCurs1);
});

Suponiendo que nuestra clase que contiene el metodo que tiene este código se llame MiClase.java, los archivos generados serán MiClase.class y MiClase$1.class

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.