最終的でない変数を使用しようとすると、「ラムダ式で使用される変数は最終的であるか、事実上最終的である必要があります」というエラー メッセージが表示されます。ラムダ式内の変数。この要件により、キャプチャされた変数の不変性が保証されます。
提供されたコード スニペット内:
変数 calTz はラムダ式内で使用されており、最終ステータスは保証されていません。これは、ラムダ式が最終変数または実質的に最終変数のみをキャプチャできるというルールに違反します。
なぜこのルールが設けられているのですか? Java 言語仕様 (JLS) の §15.27.2 では、動的に変化するローカル変数へのアクセスを防止し、同時実行性の問題を軽減すると説明しています。キャプチャされた変数が不変であることを保証することで、言語はバグのリスクを軽減します。
この要件は匿名内部クラスにも適用されます。このようなクラス内で使用される変数も、スレッドの安全性を確保するために、final または実質的に Final である必要があります。
以上がラムダ式に最終変数または事実上最終変数が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。