Avec Java 8, une discrète (r)évolution s'est opérée, avec l'arrivée des
functors et des
expressions lambda, qui permettent (enfin) une programmation plus ou moins fonctionnelle. Qu'est-ce qu'un
functor ? Rien de plus qu'une fonction encapsulée dans un objet ! Quel intérêt ? Avant Java 8, il était impossible de passer une fonction en paramètre à une autre fonction. Depuis Java 8, c'est possible (et facile) parce qu'un
functor est un objet ! Prenons un exemple simple, on va définir un
functor qui multiplie un entier par 2, et on va le passer en argument à la fonction bien connue
println (voir code ci-dessous).
Les interfaces des
functors sont dans le package
java.util.function, ne pas oublier l'import !
La définition de
mult2 (i -> i * 2) est ce qu'on appelle une
expression lambda. Noter qu'on n'a pas besoin de préciser le type de i, parce qu'il peut être inféré à partir de celui de
mult2 !
- Code: Tout sélectionner
package functordemo1;
import java.util.function.Function;
public class FunctorDemo1
{
public static Function<Integer, Integer> mult2 = i -> i * 2;
public static void main(String[] args)
{
System.out.println(mult2.apply(3));
}
}