sábado, 8 de octubre de 2011

Inicializadores (o algo así) en Java

Este post esta dedicado a mi amigo personal Christian, que me mostró esto que realmente no lo conocía.
Supongamos que tenemos una interfaz y queremos hacer un clase anonima que implemente esta Interfaz pero necesitamos inicializar valores. No podemos llamar al constructor dado que es una clase anonima por lo tanto podemos inicializar el código de la siguiente manera:


public class Main {

	public static void main(String[] args) {
		IEjemplo ejemplo = new IEjemplo() {
			
			private String saludo;
			
			//Inicializador 
			{
				saludo = "Holass";
				System.out.println("Inicializo en el inicializador!!");
			}
			
			@Override
			public void metodoDeEjemplo() {
				System.out.println(saludo);				
			}
		};
		
		ejemplo.metodoDeEjemplo();
	}

}


Para la interfaz:


public interface IEjemplo {
	
	void metodoDeEjemplo();

}


Y la salida del programa seria:
Inicializo en el inicializador!!
Holass


La verdad no tenia idea que se podía hacer eso en Java.

Todos los días se aprende algo nuevo.