Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 24226|Répondre: 1

[Source] Explication détaillée des interfaces fonctionnelles courantes (délégués) en Java

[Copié le lien]
Publié sur 16/09/2021 09:28:21 | | | |
L’API JDK 1.8 inclut de nombreuses interfaces fonctionnelles intégrées, telles que les interfaces Comparator ou Runnable couramment utilisées dans l’ancien Java, qui ajoutent @FunctionalInterface annotations pour pouvoir être utilisées sur les lambdas. Maintenant, comprenons vraiment à partir de l’entrée des fonctions communes dans la fonction.

nomtypedescription
ConsommateurConsommateur < T >Reçoit T objets, ne retourne pas de valeurs
PrédicatPrédicat < T >Reçoit l’objet T et renvoie le booléen
FonctionFonction < T, R >Reçoit l’objet T et renvoie l’objet R
FournisseurFournisseur < T >Fournir des objets T (par exemple des plantes) sans accepter de valeurs
UnaryOperatorUnaryOperatorReçoit l’objet T et retourne l’objet T
OpérateurBinaireOpérateurBinaireRecevoir deux objets T et retourner des objets T


Une interface étiquetée comme FunctionalInterface est appelée interface fonctionnelle, qui ne peut avoir qu’une seule méthode personnalisée, mais peut inclure des méthodes héritées de la classe objet. Si une interface n’a qu’une seule méthode, le compilateur pensera qu’il s’agit d’une interface fonctionnelle. Qu’il s’agisse d’une interface fonctionnelle ou non, les points suivants doivent être notés :


  • L’annotation ne peut être marquée que sur les interfaces avec « Il n’existe qu’une seule méthode abstraite ».
  • Les méthodes statiques et par défaut dans l’interface JDK8 ne sont pas des méthodes abstraites.
  • L’interface hérite par défaut de java.lang.Object, donc si l’interface montre que la déclaration supprime la méthode dans l’Object, elle n’est pas considérée comme une méthode abstraite.
  • L’annotation n’est pas requise, et si une interface répond à la définition d'« interface fonctionnelle », elle n’a aucun effet sur l’ajout ou non de l’annotation. De plus, l’annotation permet au compilateur de mieux vérifier. Si vous écrivez une interface non fonctionnelle mais ajoutez @FunctionInterface, le compilateur signalera une erreur.
  • Définir deux méthodes personnalisées dans une interface entraînera une annotation « @FunctionalInterface » invalide ; FunctionalInterfaceTest n’est pas une erreur d’interface fonctionnelle.


java.util.function Il contient plusieurs classes pour supporter la programmation fonctionnelle de Java, et les interfaces fonctionnelles de ce paquet sont :

matricule
Interface & Description
1BiConsumer<T,U>
Représente une action qui accepte deux paramètres d’entrée et ne retourne aucun résultat
2BiFonction<T,U,R>
Représente une méthode qui accepte deux paramètres d’entrée et retourne un résultat
3OpérateurBinaire<T>
représente une action qui agit sur deux opérateurs du même type, et retourne le résultat du même type d’opérateur
4BiPredicate<T,U>
Représente une méthode à deux paramètres de valeurs booléennes
5BooleanSupplier
Représente le fournisseur du résultat de la valeur booléenne
6Consommateur<T>
Représente une opération qui accepte un paramètre d’entrée et ne retourne rien
7DoubleOpérateurBinaire
représente une action qui agit sur deux opérateurs à double valeur, et retourne le résultat d’une double valeur.
8DoubleConsumer
Représente une action qui accepte un paramètre de valeur double et ne retourne pas de résultat.
9DoubleFonction<R>
Représente une méthode qui accepte un paramètre à double valeur et retourne le résultat
10DoublePrédicat
Représente une méthode à valeurs booléennes avec un paramètre de double valeur
11DoubleSupplier
Représente le fournisseur d’une structure à double valeur
12DoubleToIntFunction
Accepte une entrée de type double et retourne un résultat de type int.
13DoubleToLongFunction
Accepte une entrée de type double et retourne un résultat de type long
14DoubleUnaryOperator
Acceptons un paramètre du même type double, et le type de valeur de retour est également double.
15Fonction<T,R>
Accepte un paramètre d’entrée, renvoie un résultat.
16IntBinaryOperator
Accepter à la fois les paramètres de type int, et de renvoyer la valeur type int.
17IntConsumer
Accepte un paramètre d’entrée de type int sans valeur de retour.
18IntFunction<R>
Accepte un paramètre d’entrée de type int et renvoie un résultat.
19IntPredicate
: Accepte un paramètre d’entrée int et retourne un résultat booléen.
20IntSupplier
Aucun paramètre, renvoie un résultat de type int.
21IntToDoubleFunction
Accepte une entrée de type int et retourne un résultat de type double.
22IntToLongFunction
Accepte une entrée de type int et retourne un résultat de type long.
23IntUnaryOperator
Accepter un paramètre de type int, et retourner la valeur type est également int.
24LongBinaryOperator
Accepter à la fois les paramètres de type long et de type de valeur de retour comme long.
25LongConsumer
Accepter un paramètre d’entrée de type long sans valeur de retour.
26LongFonction<R>
Accepte un paramètre d’entrée de type long et renvoie un résultat.
27LongPredicat
R accepte un paramètre d’entrée long et retourne un résultat de type booléen.
28LongSupplier
Aucun paramètre, renvoie un résultat de type long.
29LongToDoubleFunction
Accepte une entrée de type long et retourne un résultat de type double.
30LongToIntFunction
Accepte une entrée de type long et retourne un résultat de type int.
31LongUnaryOperator
Acceptons un paramètre du même type que long, et retournons la valeur de type est également long.
32ObjDoubleConsumer<T>
Accepter un type d’objet et un paramètre d’entrée de type double sans valeur de retour.
33ObjIntConsumer<T>
Accepter les paramètres d’entrée de type objet et de type int sans valeur de retour.
34ObjLongConsumer<T>
Accepte les paramètres d’entrée de type objet et type long sans retourner de valeurs.
35Prédicat<T>
Accepte un paramètre d’entrée et retourne un résultat booléen.
36Fournisseur<T>
Pas de paramètres, il retourne un résultat.
37DoubleBiFonction<T,U>
Accepte deux paramètres d’entrée et retourne un résultat de type double
38ToDoubleFunction<T>
Accepte un paramètre d’entrée et retourne un résultat de type double
39ToIntBiFunction<T,U>
Accepter deux paramètres d’entrée et retourner un résultat de type int.
40ToIntFunction<T>
Accepter un paramètre d’entrée et retourner un résultat de type int.
41À LongBiFunction<T,U>
Accepter deux paramètres d’entrée et retourner un résultat de type long.
42ToLongFunction<T>
Accepter un paramètre d’entrée et retourner un résultat de type long.
43UnaryOperator<T>
Accepter un paramètre de type T et retourner la valeur de type T.


JeL’interface fonctionnelle en Java est le délégué en .NET/C#, passe la méthode comme paramètre, comme suit :

Introduction aux délégués C# (délégué, action, func, prédicat)
https://www.itsvse.com/thread-4658-1-1.html

Méthodes et pratiques courantes

//将Function对象应用到输入的参数上,然后返回计算结果。
R applique(T t) ;

Bien que Fonction< T, R > recevoir T objets, retourner R objets, et qu’un seul objet recevoir et retourner un seul objet, mais combinés avec des tuples, plusieurs valeurs entrantes et revenantes puissent être atteintes, se référer à :

L’utilisation des tuples à Java
https://www.itsvse.com/thread-10055-1-1.html

Exemple 1 : Passer deux valeurs et les additionner

Vous pouvez utiliser une écriture simple et des expressions lambda, le code est le suivant :





Exemple 2 :

et méthode alors



Méthode compose



Code complet



Résultats du retour



(Fin)




Précédent:Solution d’exception Java FeignClient Interface pour plusieurs noms de services identiques
Prochain:Maven Project \target\classes\META-INF\MANIFEST. MF (système...
Publié sur 19/09/2021 19:34:22 |
Java a aussi cherché, bien qu’il ne soit pas utilisé
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com