En lenguajes como Python tenemos algo como esto:
switch=[
lambda n: 'Hola',
lambda n: 'Que tengas un buen dia' if n == 1 else 'Tal vez no tengas un buen dia',
lambda n: 'Hoy es un buen dia para empezar' if n == 2 else 'Tal vez otro dia puedas empezar',
]
opcion=raw_input('Introduce un numero ente 1 y 2:')
print switch[0](opcion)
print switch[1](opcion)
En Java 8 tenemos "las expresiones Lambda". Que se puede definir como un "nuevo estilo" o manera de programar usando Lambdas.
En el sitio oficial de Oracle tenemos esta explicación:
"They provide a clear and concise way to represent one method interface using an expression. Lambda expressions also improve the
Collection
libraries making it easier to
iterate through, filter, and extract data from a Collection
.
In addition, new concurrency features improve performance in
multicore environments."Podemos escribir algo como esto:
Clase instancia = () -> hacerAlgo();
La función puede o no contener parámetros. Además no es necesario definir qué tipo de dato es (String, int, double, boolean, char).
Clase instancia = (String a) -> hacerAlgo(a);
Ejercicio. Crearemos una interface "Servicio" que contenga un método llamado opera, elcual recibe dos parámetros a y b. Una clase principal con un método llamado "operacion"que recibirá tres parámetros,las variables a,b y una instancia de tipo Servicio. La operación a realizar es la suma.
import static java.lang.System.out;
public class Control{
public static void main(String[] args) {
Servicio s=(a,b) -> a-b;
out.println("35 - 26 = " + new Control().operacion(35, 26, s));
}
private int operacion(int a,int b, Servicio servicio){
return servicio.opera(a,b);
}
}
interface Servicio{
int opera(int a,int b);
}
El resultado será 35 - 26 = 9.
Links
http://viralpatel.net/blogs/lambda-expressions-java-tutorial/
http://stackoverflow.com/questions/16501/what-is-a-lambda-function