Java 8 - Interfaces funcionales
Las interfaces funcionales tienen una sola funcionalidad para exhibir. Por ejemplo, se utiliza una interfaz Comparable con un solo método 'compareTo' para fines de comparación. Java 8 ha definido una gran cantidad de interfaces funcionales para su uso extensivo en expresiones lambda. A continuación se muestra la lista de interfaces funcionales definidas en el paquete java.util.Function.
Sr.No. | Interfaz y descripción |
---|---|
1 |
BiConsumidor Representa una operación que acepta dos argumentos de entrada y no devuelve ningún resultado. |
2 |
Bifunción Representa una función que acepta dos argumentos y produce un resultado. |
3 |
Operador binario Representa una operación sobre dos operandos del mismo tipo, produciendo un resultado del mismo tipo que los operandos. |
4 |
Bipredicado Representa un predicado (función de valor booleano) de dos argumentos. |
5 | Suministrador booleano Representa un proveedor de resultados con valores booleanos. |
6 |
Consumidor Representa una operación que acepta un único argumento de entrada y no devuelve ningún resultado. |
7 | Operador binario doble Representa una operación sobre dos operandos de doble valor y produce un resultado de doble valor. |
8 | Consumidor doble Representa una operación que acepta un único argumento de doble valor y no devuelve ningún resultado. |
9 |
Doble Función Representa una función que acepta un argumento de valor doble y produce un resultado. |
10 | Doble Predicado Representa un predicado (función de valor booleano) de un argumento de valor doble. |
11 | Doble proveedor Representa un proveedor de resultados de doble valor. |
12 | FunciónDoubleToInt Representa una función que acepta un argumento de valor doble y produce un resultado de valor entero. |
13 | FunciónDobleALargo Representa una función que acepta un argumento de valor doble y produce un resultado de valor largo. |
14 | Operador UnarioDoble Representa una operación en un solo operando de doble valor que produce un resultado de doble valor. |
15 |
Función Representa una función que acepta un argumento y produce un resultado. |
16 | OperadorBinarioInt Representa una operación sobre dos operandos de valor int y produce un resultado de valor int. |
17 | ConsumidorInterno Representa una operación que acepta un único argumento de valor entero y no devuelve ningún resultado. |
18 |
FunciónInt Representa una función que acepta un argumento de valor entero y produce un resultado. |
19 | PredicadoInt Representa un predicado (función de valor booleano) de un argumento de valor entero. |
20 | ProveedorInterno Representa a un proveedor de resultados de valor internacional. |
21 | IntToDoubleFunction Representa una función que acepta un argumento de valor entero y produce un resultado de valor doble. |
22 | FunciónIntToLong Representa una función que acepta un argumento de valor entero y produce un resultado de valor largo. |
23 | OperadorIntUnario Representa una operación en un solo operando de valor int que produce un resultado de valor int. |
24 | Operador binario largo Representa una operación sobre dos operandos de valor largo y produce un resultado de valor largo. |
25 | Consumidor largo Representa una operación que acepta un único argumento de valor largo y no devuelve ningún resultado. |
26 |
Función Larga Representa una función que acepta un argumento de valor largo y produce un resultado. |
27 | Predicado largo Representa un predicado (función de valor booleano) de un argumento de valor largo. |
28 | Proveedor largo Representa un proveedor de resultados valiosos a largo plazo. |
29 | Función Larga ADoble Representa una función que acepta un argumento de valor largo y produce un resultado de valor doble. |
30 | FunciónLongToInt Representa una función que acepta un argumento de valor largo y produce un resultado de valor entero. |
31 | Operador Unario Largo Representa una operación en un solo operando de valor largo que produce un resultado de valor largo. |
32 |
ObjConsumidorDoble Representa una operación que acepta un argumento de valor de objeto y de valor doble, y no devuelve ningún resultado. |
33 |
ObjIntConsumidor Representa una operación que acepta un argumento con valor de objeto y con valor de entero, y no devuelve ningún resultado. |
34 |
ObjLongConsumer Representa una operación que acepta un argumento con valor de objeto y uno de valor largo, y no devuelve ningún resultado. |
35 |
Predicado Representa un predicado (función de valor booleano) de un argumento. |
36 |
Proveedor Representa un proveedor de resultados. |
37 |
ADobleBiFunción Representa una función que acepta dos argumentos y produce un resultado de doble valor. |
38 |
ADobleFunción Representa una función que produce un resultado de valor doble. |
39 |
AIntBiFunción Representa una función que acepta dos argumentos y produce un resultado de valor entero. |
40 |
AFunciónInt Representa una función que produce un resultado de valor entero. |
41 |
ALaBiFunciónLarga Representa una función que acepta dos argumentos y produce un resultado de valor largo. |
42 |
AFunciónLarga Representa una función que produce un resultado de valor largo. |
43 |
Operador Unario Representa una operación en un solo operando que produce un resultado del mismo tipo que su operando. |
Ejemplo de interfaz funcional
La interfaz de predicado
Cree el siguiente programa Java utilizando cualquier editor de su elección en, por ejemplo, C:\> JAVA.
Java8Tester.java
Demostración en vivoimport java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Java8Tester { public static void main(String args[]) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); // Predicate<Integer> predicate = n -> true // n is passed as parameter to test method of Predicate interface // test method will always return true no matter what value n has. System.out.println("Print all numbers:"); //pass n as parameter eval(list, n->true); // Predicate<Integer> predicate1 = n -> n%2 == 0 // n is passed as parameter to test method of Predicate interface // test method will return true if n%2 comes to be zero System.out.println("Print even numbers:"); eval(list, n-> n%2 == 0 ); // Predicate<Integer> predicate2 = n -> n > 3 // n is passed as parameter to test method of Predicate interface // test method will return true if n is greater than 3. System.out.println("Print numbers greater than 3:"); eval(list, n-> n > 3 ); } public static void eval(List<Integer> list, Predicate<Integer> predicate) { for(Integer n: list) { if(predicate.test(n)) { System.out.println(n + " "); } } } }
Aquí hemos pasado la interfaz Predicate, que toma una sola entrada y devuelve Boolean.
Verificar el resultado
Compile la clase usando javac compilador de la siguiente manera −
C:\JAVA>javac Java8Tester.java
Ahora ejecute Java8Tester de la siguiente manera −
C:\JAVA>java Java8Tester
Debería producir el siguiente resultado −
Print all numbers: 1 2 3 4 5 6 7 8 9 Print even numbers: 2 4 6 8 Print numbers greater than 3: 4 5 6 7 8 9
Java