Java 8 pass method as parameter

Torsten Römer picture Torsten Römer · Aug 7, 2014 · Viewed 86.6k times · Source

Currently getting into Java 8 lambda expressions and method references.

I want to pass a method with no args and no return value as argument to another method. This is how I am doing it:

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

I know there is a set of predefined functional interfaces in java.util.function such as Function<T,R> but I didn't find one with no arguments and not producing a result.

Answer

Joop Eggen picture Joop Eggen · Aug 8, 2014

It really does not matter; Runnable will do too.

Consumer<Void>,
Supplier<Void>,
Function<Void, Void>