Maison > Java > javaDidacticiel > le corps du texte

Introduction à l'utilisation des références de fonctions en Java8

黄舟
Libérer: 2017-09-19 10:27:02
original
1563 Les gens l'ont consulté

Cet article vous présente principalement l'utilisation des références de fonctions dans le didacticiel d'apprentissage Java8. L'article le présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. apprendre ensemble.

Préface

Dans l'article précédent, nous avons utilisé des exemples pour expliquer comment définir et utiliser des expressions lambda, et par rapport à d'autres langages, A spécification spéciale des expressions lambda en Java. Et mentionné, les expressions lambda peuvent être encore simplifiées en références de fonction.

Cet article présentera comment utiliser les références de fonctions. Pas grand chose à dire, jetons un œil à l'introduction détaillée.

Types de références de fonction

Les références de fonction sont divisées en quatre types suivants :

  • Les fonctions statiques, telles que la fonction parseInt de la classe Integer, peuvent être écrites sous la forme de Integer::parseInt

  • Références aux fonctions au niveau objet, telles que la fonction de longueur de la classe String, peut être écrit comme String::length

  • Une référence à une fonction d'une instance spécifique, telle que getValue d'une instance nommée coûteuseTransaction, écrite comme expensiveTransaction::getValue

  • Une référence à un constructeur

Fonction statique

Par exemple :


Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
Copier après la connexion

Peut s'écrire comme :


Function<String, Integer> stringToInteger = Integer::parseInt;
Copier après la connexion

Une référence à une fonction au niveau objet


BiPredicate<List<String>, String> contains =
(list, element) -> list.contains(element);
Copier après la connexion

peut s'écrire comme :


BiPredicate<List<String>, String> contains = List::contains;
Copier après la connexion

Référence du constructeur

ci-dessous Pour donner un autre exemple de constructeur, définissez d'abord une interface fonctionnelle, et la seule méthode get renvoie un objet du type spécifié.


@FunctionalInterface
public interface Supplier<T> {
 T get();
}
Copier après la connexion


Supplier<TantanitReader> constructor = () -> new TantanitReader();
TantanitReader tantanitReader = constructor.get();
Copier après la connexion

L'expression lambda du code ci-dessus est nouvelle et renvoie un nouvel objet, faisant de la variable constructeur un référence du constructeur à l'appareil.

est équivalent à la référence de fonction suivante :


Supplier<TantanitReader> constructor2 = TantanitReader::new;
TantanitReader tantanitReader2 = constructor2.get();
Copier après la connexion

Les exemples ci-dessus sont tous sans paramètres. Ce qui suit utilise toujours le constructeur comme exemple pour. introduire Avec des paramètres :


public TantanitReader(String loginName) {
 this.loginName = loginName;
}
Copier après la connexion


Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");

Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");
Copier après la connexion

À l'heure actuelle, puisque la fonction n'a qu'un seul paramètre, vous pouvez utiliser celui de Java propre fonction Cette interface fonctionnelle, ses fonctions réelles sont les suivantes :


R apply(T t);
Copier après la connexion

fonctions pour renvoyer un résultat basé sur un paramètre. À partir de là, nous pouvons utiliser constructor4 et la référence de fonction correspondante constructor5.

Résumé

L'utilisation de références de fonction peut non seulement simplifier les expressions lambda, mais aussi se concentrer sémantiquement davantage sur le nom de la méthode, c'est-à-dire ce qui doit être fait et le le niveau d'abstraction est plus proche de la cognition humaine. Par conséquent, les références de fonction doivent être utilisées autant que possible.

Résumé

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!