web-dev-qa-db-ja.com

ラムダの意味()-> {} in Java

私は次のスタックオーバーフローの答えを見ています: 実行時にSpringの@Scheduled fixedDelayを変更する方法

また、コードには次の行があります。

schedulerFuture = taskScheduler.schedule(() -> { }, this);

ラムダ() -> {}はそのコードでの意味です。ラムダを使用せずに作成する必要があります。

25
Aliuk

その Runnable は空のrun定義で。これの匿名クラス表現は次のとおりです。

new Runnable() {
     @Override public void run() {
          // could have done something here
     }
}
41
Naman

ラムダ式は、メソッドを引数として渡すことができる匿名関数、または単純に、多くの定型コードを削除するのに役立つメカニズムです。アクセス修飾子(プライベート、パブリック、または保護)、戻り値の型宣言、名前はありません。

この例を見てみましょう。

(int a, int b) -> {return a > b}

あなたの場合、次のようなことができます:

schedulerFuture = taskScheduler.schedule(new Runnable() {
     @Override 
     public void run() {
        // task details
     }
}, this);
2

ラムダの場合:

左側は引数、あなたが取るものです。 _()_で囲まれているのは、この関数が取るすべての引数です

_->_は、左側にあるものを取り、処理のために右側に渡す関数であることを示します

右側はボディです-ラムダが行うこと。 _{}_で囲まれているのは、この関数が行うすべてのことです

それがわかったら、その構築が一致するクラスのインスタンスを通過することだけを知る必要があります(schedule()呼び出しで期待される引数の型を見てください)分析したところです。

1
Deltharis

ラムダ式は、基本的に機能インターフェイスのインスタンスを表します。ラムダ式は次のようになります:(lambda operator params)-> {body}

()-> System.out.println( "これは、ラムダ式がパラメーターを取っていないことを意味します");

(p)-> System.out.println( "Lambda expression with one parameter:" + p);

0
Archit Sud