JAVA 8传递法作为参数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

目前进入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();
}

提问于
用户回答回答于

这真的不重要;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作为方法传递。

扫码关注云+社区