Java 8 传递方法作为参数

2022-08-31 13:40:38

目前正在进入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.function中有一组预定义的功能接口,但是我没有找到一个没有参数且不产生结果的接口。Function<T,R>


答案 1

这真的无关紧要; 也会做的。Runnable

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

答案 2

您也可以像这样传递 lambda:

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

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

通过这种方式,您将 lambda 直接作为方法传递。


推荐