Java 8 ラムダ Void 引数 質問する

Java 8 ラムダ Void 引数 質問する

Java 8 に次の関数インターフェースがあるとします。

interface Action<T, U> {
   U execute(T t);
}

また、場合によっては、引数や戻り値の型のないアクションが必要になります。そのため、次のように記述します。

Action<Void, Void> a = () -> { System.out.println("Do nothing!"); };

しかし、コンパイルエラーが発生するので、次のように記述する必要があります。

Action<Void, Void> a = (Void v) -> { System.out.println("Do nothing!"); return null;};

醜いですね。型パラメータを削除する方法はありますかVoid?

ベストアンサー1

使用Supplier何も受け取らずに何かを返す場合。

使用Consumer何かを受け取るが、何も返さないとき。

使用Callable結果を返し、例外をスローする可能性がある(最も類似しているのはThunk一般的な CS 用語で)。

使用Runnableどちらも実行せず、投げることもできない場合。

おすすめ記事