Lambdas et génériques en Java 8
Je joue avec la future version java 8 aka JDK 1.8.
Et j'ai découvert que vous pouvez facilement faire
interface Foo { int method(); }
Et l'utiliser comme
Foo foo = () -> 3;
System.out.println("foo.method(); = " + foo.method());
Qui imprime simplement 3.
Et j'ai aussi trouvé qu'il y a un java.util.fonction.Interface de fonction qui le fait de manière plus générique. Cependant, ce code ne compilera pas
Function times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);
Et il semble que je doive d'abord faire quelque chose comme
interface IntIntFunction extends Function<Integer, Integer> {}
IntIntFunction times3 = (Integer triple) -> 3 * triple;
Integer twelve = times3.map(4);
Je me demande donc s'il existe un autre moyen d'éviter le IntIntFunction étape?
1 answers
@joop et @ edwin merci.
Basé sur la dernière version de JDK 8, cela devrait le faire.
IntFunction<Integer> times3 = (Integer triple) -> 3 * triple;
Et au cas où vous n'aimeriez pas, vous pouvez le rendre un peu plus lisse avec quelque chose comme
IntFunction times3 = triple -> 3 * (Integer) triple;
Vous n'avez donc pas besoin de spécifier un type ou des parenthèses, mais vous devrez convertir le paramètre lorsque vous y accéderez.