73

目前进入 Java 8 lambda 表达式和方法引用。

我想将一个没有参数且没有返回值的方法作为参数传递给另一个方法。这就是我的做法:

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.functionFunction<T,R>我没有找到一个没有参数且不产生结果的接口。

4

2 回答 2

66

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

Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
于 2014-08-08T08:39:30.357 回答
45

你也可以像这样传递 lambda:

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

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

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

于 2015-09-07T20:53:11.297 回答