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作为方法。