permet de dire que nous avons un Predicate
et un Function
-Interface:Java 8: Je ne comprends pas la façon dont Java implémente des interfaces fonctionnelles
Function<String, String> function = null;
Predicate<String> predicate = null;
Maintenant, je veux donner le Predicate
-Interface une référence de méthode où le type de retour est un boolean
et dans notre cas le paramètre une chaîne. Mais pourquoi la référence de méthode suivante semble être droite:
Predicate<String> predicate = String::isEmpty;
Le isEmpty
-method n'a pas String-paramètre, bien que le Predicate
-Interface nécessite une chaîne de paramètres. Pourquoi est-ce toujours juste? Est-ce que je manque quelque chose?
Un autre exemple: L'interface de fonction renvoie dans notre cas une chaîne et prend une chaîne comme paramètre. Mais la référence de méthode suivante semble erroné:
Function<String, String> function = String::concat; //wrong
La Concat-Méthode a une chaîne en tant que paramètre et renvoie une chaîne. Pourquoi c'est faux?
J'espère que quelqu'un peut me l'expliquer.
Votre question concerne vraiment les références de méthodes plutôt que les interfaces fonctionnelles. Je vous recommande de lire https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html Il explique les quatre types de références de méthodes et les expressions lambda pour lesquelles elles sont des raccourcis. – sprinter