Maison > Java > javaDidacticiel > le corps du texte

Pourquoi les références de méthodes Java avec des types de retour correspondent-elles apparemment à l'interface consommateur ?

Barbara Streisand
Libérer: 2024-11-20 19:04:14
original
828 Les gens l'ont consulté

Why Do Java Method References with Return Types Seemingly Match the Consumer Interface?

Comprendre la compatibilité des références de méthode avec l'interface consommateur

Malgré le titre, "Pourquoi une référence de méthode Java avec un type de retour correspond-elle à l'interface consommateur interface?", les expressions lambda et les références de méthodes possèdent une relation complexe qui s'étend au-delà de la simple correspondance de types. Examinons ce sujet et clarifions les subtilités impliquées.

Lors de la définition d'une expression lambda avec un type de retour, tel que lambda1 et lambda2 dans l'exemple de code, elle adhère à la signature de type de l'interface fonctionnelle qu'elle implémente. Cependant, le cas surprenant se produit avec les références de méthodes.

Considérez lambda3 et lambda4, qui font référence à la méthode consume. Intuitivement, nous pourrions nous attendre à ce que lambda3 échoue en raison de la non-concordance entre le type de retour de consume (String) et le type de retour void attendu de l'interface Consumer. Cependant, au lieu d'échouer, lambda3 réussit.

La réponse réside dans le principe de conception derrière les références de méthodes. Ils visent à permettre l'adaptation des méthodes aux interfaces fonctionnelles, quelles que soient leurs valeurs de retour. Dans ce cas, la valeur de retour de la méthode consume (String) est apparemment ignorée, ce qui lui permet de se conformer aux exigences vides de l'interface Consumer.

Fait intéressant, le même principe s'applique aux expressions lambda. La forme lambda (args) -> L'expression est compatible avec les valeurs uniquement si l'expression est évaluée à une valeur non-instruction. Cependant, si l'expression est une instruction elle-même (par exemple, appel de méthode, incrémentation/décrémentation), elle devient compatible avec void. Ainsi, consumer représente une forme valide compatible avec le vide.

À titre d'exception notable, la forme (arg) -> methodReturningVoid(arg) est la seule expression qui manque de compatibilité de valeurs. Comprendre ces complexités améliore notre compréhension des expressions lambda et des références de méthodes de Java, nous permettant d'exploiter efficacement leurs capacités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal