Cet article est un article qui présente un exemple d'implémentation d'une interface fonctionnelle de base.
Normalement, je l'implémenterais dans une expression lambda ou l'utiliserais dans un Stream, mais par souci de simplicité, j'ose utiliser une méthode familière au lieu de l'utiliser.
J'aurais aimé avoir le sentiment que "les méthodes entrent dans des variables". (Strictement parlant, c'est une classe)
Il y a 43 interfaces fonctionnelles définies dans le package java.util.function, mais il y a quatre bases à garder à l'esprit. À part ces quatre, il est prudent de penser qu'il s'agit de types étendus.
Supplier Quelqu'un qui a quelque chose et me le donne. La méthode abstraite est get. Aucun argument, avec valeur de retour.
import java.time.LocalDateTime;
import java.util.function.Supplier;
public class Main {
public static void main(String[] args) {
Supplier<LocalDateTime> s = LocalDateTime::now;
System.out.println(s.get()); // -> 2017-01-11T16:29:08.086
}
}
Consumer Une personne qui traite ce que vous recevez. La méthode abstraite est accept. Avec des arguments, pas de valeur de retour.
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
Consumer<String> c = System.out::println;
c.accept("test"); // -> test
}
}
Predicate Une personne qui rend la vérité de ce qu'il a reçu. La méthode abstraite est le test. Avec argument, avec valeur de retour (booléen uniquement).
import java.util.function.Predicate;
public class Main {
public static void main(String[] args) {
Predicate<String> p = ""::equals;
System.out.println(p.test("foo")); // -> false
}
}
Function Une soi-disant fonction qui traite et renvoie ce que vous recevez. La méthode abstraite est appliquée. Il y a un argument et une valeur de retour.
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<String, Integer> f = Integer::parseInt;
System.out.println(f.apply("55") + 45); // -> 100
}
}
Recommended Posts