ホームページ > Java > &#&チュートリアル > ラムダ式変数を事実上 Final にする必要があるのはなぜですか?

ラムダ式変数を事実上 Final にする必要があるのはなぜですか?

DDD
リリース: 2024-12-24 17:01:11
オリジナル
338 人が閲覧しました

Why Must Lambda Expression Variables Be Effectively Final?

ラムダ式: 変数の不変性の処理

ラムダ式では、式のスコープ内で使用される変数は、final または「実質的にfinal」であることが期待されます。この制限は、キャプチャされた変数に課せられる不変性要件から生じます。

Java 言語仕様 (JLS) の §15.27.2 でこれについて説明しています。

「実質的に最終変数に対する制限により、動的変数へのアクセスが禁止されます」 - ローカル変数の変更。そのキャプチャにより同時実行の問題が発生する可能性があります。"

バグのリスクを最小限に抑えるには、キャプチャされた変数は決して変更可能ではないことが決定されました。これにより、ラムダによってアクセスされる値がその実行を通じて一貫性を保つことが保証されます。

この制限は、ラムダ式だけでなく、匿名の内部クラスにも適用されます。したがって、そのような構成内で使用される変数が、final として宣言されるか、事実上 Final (つまり、値が 1 回だけ割り当てられ、決して変更されない) であることを確認することが重要です。

以上がラムダ式変数を事実上 Final にする必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート