Javaでラムダ対コールバック

サミール・シンハ:

ライフサイクルのSpring Bean ドキュメントはしばしば言及callback methods

コールバックの意味を見つけようとしますが、私はそれがJavaでインターフェースを介して達成することができ、別の引数として一つの機能を通過している言及数リンクを介して来ました。

私は、これはコールバックであるならば、ラムダ式と機能インタフェースは何ですか、混乱していますか?それらは同一でも異なっていますか?

KelvॊD:

コールバックは、関数のどこかを渡すパターンであり、それは後に呼び出されます。

機能インタフェースは、あなたが期待する機能の種類を指定する方法です。

ラムダは、機能的なインターフェースを実装するための簡単な方法です。あなたがコールバックを使用する場合ラムダは便利です。


例えば:

私は、将来のある時点でメッセージを生成するつもりだ、とあなたはそれが起こるときに言ったことでするとします。私はあなたが私にメッセージの準備ができたときに呼び出す関数を与えることができます方法があります。

public void callThisWithMessage(Consumer<String> messageConsumer);

あなたは私にメッセージコンシューマを与える、とのメッセージが準備ができたとき、私は後でそれを呼び出します。これは例ですコールバック

あなたがここに私に与えることができ、関数の型がで指定されConsumerているインターフェース、機能インタフェースインターフェイスは、それが(この場合は文字列で)パラメータを受け取るメソッドを持っていることを言います。

あなたは私のコールバックサービスを使用する場合は、使用して実装することができ、消費者ラムダ関数を

callThisWithMessage(msg -> System.out.println("Message received: "+msg));

これは、実装の機能インターフェースことラムダ関数を作成しConsumer<String>、その後のための私の方法にそれを渡すコールバック

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222974&siteId=1