Java 8 pass method as parameter

JavaLambdaJava 8Method Reference

Java Problem Overview


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.

Java Solutions


Solution 1 - Java

It really does not matter; Runnable will do too.

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

Solution 2 - Java

You can also pass lambda like this:

public void pass() {
    run(()-> System.out.println("Hello world"));
}

public void run(Runnable function) {
    function.run();
}

In this way, you are passing lambda directly as method.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTorsten R&#246;merView Question on Stackoverflow
Solution 1 - JavaJoop EggenView Answer on Stackoverflow
Solution 2 - JavaobeyView Answer on Stackoverflow