Les interfaces fonctionnelles ont une seule fonctionnalité à présenter. Par exemple, une interface Comparable avec une seule méthode « compareTo » est utilisée à des fins de comparaison. Java 8 a défini de nombreuses interfaces fonctionnelles à utiliser de manière intensive dans les expressions lambda. Voici la liste des interfaces fonctionnelles définies dans le package java.util.Function.
Sr.No.
Interface et description
1
BiConsommateur
Représente une opération qui accepte deux arguments d'entrée et ne renvoie aucun résultat.
2
BiFonction
Représente une fonction qui accepte deux arguments et produit un résultat.
3
OpérateurBinaire
Représente une opération sur deux opérandes du même type, produisant un résultat du même type que les opérandes.
4
Biprédicat
Représente un prédicat (fonction booléenne) de deux arguments.
5
Fournisseur booléen
Représente un fournisseur de résultats booléens.
6
Consommateur
Représente une opération qui accepte un seul argument d'entrée et ne renvoie aucun résultat.
7
OpérateurBinaireDouble
Représente une opération sur deux opérandes à valeur double et produisant un résultat à valeur double.
8
Double Consommateur
Représente une opération qui accepte un seul argument à valeur double et ne renvoie aucun résultat.
9
DoubleFonction
Représente une fonction qui accepte un argument à valeur double et produit un résultat.
10
Doubleprédicat
Représente un prédicat (fonction booléenne) d'un argument à valeur double.
11
Double fournisseur
Représente un fournisseur de résultats à double valeur.
12
DoubleVersIntFonction
Représente une fonction qui accepte un argument à valeur double et produit un résultat à valeur int.
13
DoubleToLongFonction
Représente une fonction qui accepte un argument à valeur double et produit un résultat à valeur longue.
14
DoubleUnaryOperator
Représente une opération sur un seul opérande à double valeur qui produit un résultat à double valeur.
15
Fonction
Représente une fonction qui accepte un argument et produit un résultat.
16
OpérateurBinaryInt
Représente une opération sur deux opérandes de valeur int et produit un résultat de valeur int.
17
IntConsumer
Représente une opération qui accepte un seul argument de valeur int et ne renvoie aucun résultat.
18
IntFonction
Représente une fonction qui accepte un argument de valeur int et produit un résultat.
19
IntPrédicat
Représente un prédicat (fonction à valeur booléenne) d'un argument à valeur int.
20
Fournisseur Int
Représente un fournisseur de résultats à valeur int.
21
IntToDoubleFonction
Représente une fonction qui accepte un argument à valeur int et produit un résultat à valeur double.
22
Fonction IntToLong
Représente une fonction qui accepte un argument de valeur int et produit un résultat de valeur longue.
23
IntUnaryOperator
Représente une opération sur un seul opérande de valeur int qui produit un résultat de valeur int.
24
OpérateurLongBinary
Représente une opération sur deux opérandes de valeur longue et produit un résultat de valeur longue.
25
Longue consommation
Représente une opération qui accepte un seul argument de valeur longue et ne renvoie aucun résultat.
26
LongueFonction
Représente une fonction qui accepte un argument de valeur longue et produit un résultat.
27
LongPrédicat
Représente un prédicat (fonction booléenne) d'un argument à valeur longue.
28
Fournisseur long
Représente un fournisseur de résultats à long terme.
29
FonctionLongToDouble
Représente une fonction qui accepte un argument à valeur longue et produit un résultat à valeur double.
30
LongToIntFonction
Représente une fonction qui accepte un argument de valeur longue et produit un résultat de valeur int.
31
OpérateurLongUnaire
Représente une opération sur un seul opérande de valeur longue qui produit un résultat de valeur longue.
32
ObjDoubleConsumer
Représente une opération qui accepte un argument à valeur objet et un argument à valeur double, et ne renvoie aucun résultat.
33
ObjIntConsumer
Représente une opération qui accepte un argument de valeur objet et un argument de valeur int, et ne renvoie aucun résultat.
34
ObjLongConsumer
Représente une opération qui accepte un argument de valeur objet et un argument de valeur longue, et ne renvoie aucun résultat.
35
Prédicat
Représente un prédicat (fonction booléenne) d'un argument.
36
Fournisseur
Représente un fournisseur de résultats.
37
VersDoubleBiFonction
Représente une fonction qui accepte deux arguments et produit un résultat à double valeur.
38
ToDoubleFunction
Représente une fonction qui produit un résultat à valeur double.
39
VersIntBiFonction
Représente une fonction qui accepte deux arguments et produit un résultat de valeur int.
40
ToIntFunction
Représente une fonction qui produit un résultat de valeur int.
41
ToLongBiFunction
Représente une fonction qui accepte deux arguments et produit un résultat long.
42
ToLongFunction
Représente une fonction qui produit un résultat à valeur longue.
43
Opérateurunaire
Représente une opération sur un seul opérande qui produit un résultat du même type que son opérande.
Exemple d'interface fonctionnelle
L'interface de prédicat est une interface fonctionnelle avec une méthode test(Object) pour renvoyer une valeur booléenne. Cette interface signifie qu'un objet est testé pour être vrai ou faux.
Créez le programme Java suivant à l'aide de l'éditeur de votre choix dans, par exemple, C:\> JAVA.
Java8Tester.java
Démo en direct
import 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 + " ");
}
}
}
}
Ici, nous avons passé l'interface Predicate, qui prend une seule entrée et renvoie un booléen.
Vérifier le résultat
Compilez la classe en utilisant javac compilateur comme suit −
C:\JAVA>javac Java8Tester.java
Exécutez maintenant le Java8Tester comme suit −
C:\JAVA>java Java8Tester
Il devrait produire la sortie suivante −
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