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

ラムダ式に最終変数または事実上最終変数が必要なのはなぜですか?

Linda Hamilton
リリース: 2024-12-25 10:08:09
オリジナル
821 人が閲覧しました

Why Do Lambda Expressions Require Final or Effectively Final Variables?

ラムダ式で使用される変数にはファイナリティが必要です

最終的でない変数を使用しようとすると、「ラムダ式で使用される変数は最終的であるか、事実上最終的である必要があります」というエラー メッセージが表示されます。ラムダ式内の変数。この要件により、キャプチャされた変数の不変性が保証されます。

提供されたコード スニペット内:

変数 calTz はラムダ式内で使用されており、最終ステータスは保証されていません。これは、ラムダ式が最終変数または実質的に最終変数のみをキャプチャできるというルールに違反します。

なぜこのルールが設けられているのですか? Java 言語仕様 (JLS) の §15.27.2 では、動的に変化するローカル変数へのアクセスを防止し、同時実行性の問題を軽減すると説明しています。キャプチャされた変数が不変であることを保証することで、言語はバグのリスクを軽減します。

この要件は匿名内部クラスにも適用されます。このようなクラス内で使用される変数も、スレッドの安全性を確保するために、final または実質的に Final である必要があります。

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

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