Interfaces Funcionales Lambda - Tensho97/Aprende-a-Aprender GitHub Wiki
Las expresiones Lambda van de la mano con las interfaces funcionales, el concepto de interfaz funcional es añadido con la versión de Java 8 dada la necesidad de las expresiones Lambda.
Una interfaz funcional guarda el mismo concepto que una interfaz en las anteriores versiones de Java salvo que se añade 2 reglas, y es que para que una interfaz sea funcional debe:
- Tener un sólo método abstracto.
- Una interfaz funcional debe implementar los métodos dentro la misma interfaz (esto no se podía hacer en versiones anteriores), para esto se debe anteponer la palabra reservada default al inicio de la declaración del método.
Aunque es opcional se puede declarar la anotación @FunctionalInterface, esta anotación le indica al compilador que esta es una interfaz funcional.
Java SE 8 define cuatro (4) grandes grupos de interfaces funcionales agrupadas en el paquete java.util.function. A continuación veremos las principales de cada grupo:
- java.util.function.Predicate: Define el método +test(T):boolean y es usada para validación de criterios.
- java.util.function.Supplier: Define el método +get():T y es usada para la creación de objetos.
- java.util.function.Consumer: Define el método +accept(T):void y es usada para consumir métodos del parámetro T, causando posibles efectos secundarios.
- java.util.function.Function<T, R>: Define el método +apply(T):R y es usada para convertir de un valor T a otro valor R.
Autor: Richard