図に示すように、etotalPrice を外部で定義し、この値を 2 つの for ループで変更しようとしましたが、エラーが報告されました。それ? (NumberUtil.add と mutiplyu は、小数点以下 2 桁を保持する基本的なメソッドです)
欢迎选择我的课程,让我们一起见证您的进步~~
Java の古典的な書籍「Effective Java」と「Java Concurrency in Practice」では、変数参照リークとも呼ばれる匿名関数での変数参照がスレッドの安全性の問題を引き起こす可能性があるとマスターが述べています。匿名クラス内のローカル変数の場合は、final、つまり不変オブジェクトとして宣言する必要があります。
Java8 はここに構文シュガーを追加します。ラムダ式と匿名クラス内で、ローカル変数が参照される場合、それは直接 Final として扱われます。
このコードをリファクタリングすることをお勧めします。ラムダを使用して値を返し、それを外部変数に割り当てます。
これは、ラムダ式の totalPrice が Final 型である必要があることを意味します。final 型は初期化後に変更できないため、totalPrice に値を再度代入するとエラーになります。したがって、値を totalPrice に再度コピーするのではなく、変数を再定義して新しい値を保存する必要があります。変数を変更できない場合は、ラムダ式を使用しないでください。
最終的には、もちろん不変です。変更する必要がある場合は、ラムダを使用しないでください。ラムダを使用する場合は、値を変更しないでください。
Java の古典的な書籍「Effective Java」と「Java Concurrency in Practice」では、変数参照リークとも呼ばれる匿名関数での変数参照がスレッドの安全性の問題を引き起こす可能性があるとマスターが述べています。匿名クラス内のローカル変数の場合は、final、つまり不変オブジェクトとして宣言する必要があります。
Java8 はここに構文シュガーを追加します。ラムダ式と匿名クラス内で、ローカル変数が参照される場合、それは直接 Final として扱われます。
このコードをリファクタリングすることをお勧めします。ラムダを使用して値を返し、それを外部変数に割り当てます。
これは、ラムダ式の totalPrice が Final 型である必要があることを意味します。final 型は初期化後に変更できないため、totalPrice に値を再度代入するとエラーになります。したがって、値を totalPrice に再度コピーするのではなく、変数を再定義して新しい値を保存する必要があります。変数を変更できない場合は、ラムダ式を使用しないでください。
最終的には、もちろん不変です。変更する必要がある場合は、ラムダを使用しないでください。ラムダを使用する場合は、値を変更しないでください。