Una Interface Funcional es una interface que contiene uno y solo un método abstracto aunque puede contener métodos por defecto y estáticos.
Método Abstracto: Un método abstracto es aquel que esta declarado pero no implementado. Es decir, es aquel método del cual se escribe su nombre, valor de retorno y parámetros de entrada, pero no su código.
Si bien podemos definir nuestras propias interfaces funcionales, java 8 trae pre definidos una gran variedad de interfaces en el paquete java.util.function los cuales podemos usar en cualquier momento.
Link Oracle : https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
Declaración de una Interface Funcional
A continuación un ejemplo de una Interface Funcional que lleva por nombre «MiInterface» e implementa un metod abstracto invertir:
@FunctionalInterface public interface MiInterface { String invertir(String palabra); }
Podemos destacar el uso de @FunctionalInterface esta anotación le permite al compilador realizar la validación de la interface, por ejemplo, si ponemos dos métodos abstractos, nos lanza la siguiente advertencia:
Implementación de la Interface Funcional
A continuación un ejemplo de como implementar la Interface Funcional de la forma antigua y con java 8 usando lambdas:
public class Main { public static void main(String[] args) { //Antigua forma MiInterface miInterface = new MiInterface() { @Override public String invertir(String palabra) { String result = ""; for (int i = palabra.length() - 1; i >= 0; i--) { result += palabra.charAt(i); } return result; } }; System.out.println(miInterface.invertir("supercalifragilístico")); //Con java 8 MiInterface miInterface2 = (String palabra) -> { String result = ""; for (int i = palabra.length() - 1; i >= 0; i--) { result += palabra.charAt(i); } return result; }; System.out.println(miInterface2.invertir("supercalifragilístico")); } }
Finalmente el resultado del código anterior:
En este post se da respuesta a una pregunta realizada por facebook. El problema dice así: Se quiere personalizar un JTab[...]
Microsoft acaba de lanzar Cascadia Code una fuente monoespaciada enfocada en proporcionar una mejor experiencia en conso[...]
JTree cuenta con métodos que nos permiten cambiar los iconos de cada nodo según su estado, sin embargo a veces esto no e[...]
Cuando Android estaba en sus inicios, varios IDEs (Entorno de Desarrollo Integrado) se disputaban el dominio por su de[...]
En este post vamos a construir un Servicio Web bajo el protocolo SOAP (Simple Object Access Protocol) el cual básicament[...]
En este tutorial crearemos una aplicación sencilla para activar y desactivar el bluetooth de nuestros teléfonos intelige[...]