Java 8 pass method as parameter

微笑、不失礼 提交于 2019-11-30 10:32:16

问题


Currently getting into Java 8 lambda expressions and method references.

I want to pass a method with no args and no return value as argument to another method. This is how I am doing it:

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();
}

I know there is a set of predefined functional interfaces in java.util.function such as Function<T,R> but I didn't find one with no arguments and not producing a result.


回答1:


It really does not matter; Runnable will do too.

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



回答2:


You can also pass lambda like this:

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

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

In this way, you are passing lambda directly as method.



来源:https://stackoverflow.com/questions/25186216/java-8-pass-method-as-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!