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);
Peut s'écrire comme :
Function<String, Integer> stringToInteger = Integer::parseInt;
Une référence à une fonction au niveau objet
BiPredicate<List<String>, String> contains = (list, element) -> list.contains(element);
peut s'écrire comme :
BiPredicate<List<String>, String> contains = List::contains;
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(); }
Supplier<TantanitReader> constructor = () -> new TantanitReader(); TantanitReader tantanitReader = constructor.get();
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();
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; }
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");
À 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);
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!