Java 8通过方法作为参数

目前正在进入Java 8的lambdaexpression式和方法引用。

我想传递一个没有参数,没有返回值的方法作为另一个方法的参数。 这是我如何做到的:

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

我知道java.util.function有一组预定义的函数接口,例如Function<T,R>但是我没有find一个没有参数而没有产生结果的函数接口。

这真的没关系; Runnable也会这样做。

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

你也可以像这样传递lambda:

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

这样,你直接传递lambda作为方法。