目前正在进入Java 8 lambda表达式和方法引用。
我想传递一个没有args且没有返回值的方法作为另一个方法的参数。我就是这样做的:
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>
,但我找不到一个没有参数但没有产生结果的接口。
答案 0 :(得分:56)
真的没关系; Runnable
也会这样做。
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
答案 1 :(得分:37)
您也可以像这样传递lambda:
public void pass() {
run(()-> System.out.println("Hello world"));
}
public void run(Runnable function) {
function.run();
}
通过这种方式,您将直接传递lambda作为方法。