J'entre actuellement dans Java 8 expressions lambda et références de méthodes.
Je souhaite transmettre une méthode sans argument ni valeur de retour comme argument d'une autre méthode. Voici comment je le fais:
public void one() {
System.out.println("one()");
}
public void pass() {
run(this::one);
}
public void run(final Function function) {
function.call();
}
@FunctionalInterface
interface Function {
void call();
}
Je sais qu’il existe un ensemble d’interfaces fonctionnelles prédéfinies dans Java.util.function
comme Function<T,R>
mais je n'en ai trouvé aucun sans arguments et ne produisant aucun résultat.
Ce n'est pas grave Runnable
le fera aussi.
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
Vous pouvez aussi passer lambda comme ceci:
public void pass() {
run(()-> System.out.println("Hello world"));
}
public void run(Runnable function) {
function.run();
}
De cette façon, vous passez directement lambda comme méthode.