Dernière modification : 24/08/2022

Function - Java 8

Il s'agit d'une interface fonctionnelle et peut donc être utilisée comme cible d'affectation pour une expression lambda ou une référence de méthode. La définition d'une Function est "R apply(T t)". L'interface Function a un seul argument et un type de retour qui peut être différent.

@FunctionalInterface
public interface Function {
      R apply(T t);
}

 

1. Exemple de base de l'interface Function

Dans cette exemple nous alors utiliser le type String. Par conséquent, on aura donc Function.

final Function function = String::toUpperCase;
System.out.println(function.apply("alex")); // ALEX

2. Function avec un Stream

final List list = Arrays.asList("Alex", "Claire", "Angel");
final Function function = String::toUpperCase;
list.stream().map(function).forEach(System.out::println);
// Output:
// ALEX
// CLAIRE
// ANGEL

3. Function avec andThen

La méthode andThen permet d'exécuter une commande après avoir exécuté la commande principale :

final List list = Arrays.asList("Alex", "Claire", "Angel");
final Function function = String::toUpperCase;
final Function functionAndThen = function.andThen(x -> x.substring(2));
list.stream().map(functionAndThen).forEach(System.out::println);
// Output:
// EX
// AIRE
// GEL