最初のラムダ表現
Lambdaが登場する前に、マルチスレッドを書く必要がある場合は、次の方法が必要になる場合があります。
runnable runnable = new runnable(){@override public void run(){system.out.println( "hello runnable"); }}; ... thread.start();Lambdaの使用に変更すると、上記の例がはるかに簡単になります。
runnable noargs =() - > system.out.println( "hello lambda!〜"); ... thread.start();
ラムダ式は、データのような動作を渡す匿名関数です。式は - >パラメーターを本体から分離するために、>パラメーター部分の前に分離し、これがボディの部分です。
ラムダの他の形態
BinaryOperator <long> add =(x、y) - > x+y; //またはバイナリオーパレーター<long> add =(long x、long y) - > x+y; //またはbinaryoperator <long> add =(long x、long y) - > {x+y; };上記はすべてラムダの表現の形です。
それから質問は次のとおりです。
BinaryOperator <long> add =(long x、long y) - > x+y;平均?
このコード行では、数値の追加については説明しませんが、2つの数値を追加した結果を計算する関数を作成します。 ADDのタイプはバイナリオーパレータ<long>であり、これは2つの数字の合計ではなく、2つの数字を追加するコードです。次の例は、この変数の使用方法を示しています。
BinaryOperator <long> add =(long x、long y) - > x+y; long res = add.Apply(3L、4L); System.out.println( "res ="+res); // output:res = 7
関数インターフェイス
関数インターフェイスは、ラムダ式の一種として使用される抽象メソッドのみを持つインターフェイスです。
たとえば、Runnableは関数インターフェイスです。
新しい関数インターフェイスを作成します。
パブリックインターフェイスアドペレーター<t、d> {long add(t one、d 2);}使用:
ADDOPERATOR <LONG、LONG> ADDOPERATOR =(x、y) - > x +y; System.err.println( "カスタム関数リスナーres ="+addoperator.add(34L、65L));
ターゲットタイプ
ターゲットタイプとは、ラムダ式が配置されているコンテキストのタイプを指します。たとえば、lambda式をローカル変数に割り当てるか、パラメーターとしてメソッドに渡します。ローカル変数またはメソッドパラメーターのタイプは、ラムダ式のターゲットタイプです。
ファイナル
匿名の内部クラスのメソッドのローカル変数を参照する場合、これにはローカル変数が最終的である必要があります。
Lambdaでは、参照されている外部ローカル変数を最終的なものとして宣言する必要はありませんが、変数は一度しか割り当てられません。
次の例では、コメントを削除して名前を再度割り当てると、コンパイルされず、エラーメッセージが表示されます。Lambda式から参照されるローカル変数は、最終または効果的に最終的にする必要があります。
ラムダ式によって参照されるローカル変数は、最終的または事実上の最終的なものでなければなりません。
string name = getUsername(); // name = "hi"; button.addactionlistener(event-> system.out.println( "name ="+name));
タイプ推論
Lambda式の型推論は、Java7で導入されたターゲットタイプの推論の拡張です。
Java7で推論をタイプします:
リスト<文字列>リスト= new arrayList <>();
上記の例では、アレイリストのパラダイムタイプを指定するのではなく、リストのタイプに基づいてアレイリストのパラダイムタイプを推測しました。
たとえば、アドペレーター<long、long> addoperator =(x、y) - > x +y;
この記事を通して、知識のこの部分を学び、理解するのに役立つことを願っています。このウェブサイトへのご支援ありがとうございます!