web-dev-qa-db-ja.com

Java 8メソッドをパラメーターとして渡す

現在、Java 8ラムダ式とメソッド参照に入ります。

引数や戻り値のないメソッドを引数として別のメソッドに渡したいです。これは私がそれをやっている方法です:

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>などの一連の定義済み機能インターフェイスがありますが、引数のない結果を生成しないものは見つかりませんでした。

67
Torsten Römer

本当に問題ではありません。 Runnableも同様です。

Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
57
Joop Eggen

次のようにラムダを渡すこともできます。

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

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

このようにして、ラムダをメソッドとして直接渡します。

40
obey