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);
}
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
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
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