ラベル final の投稿を表示しています。 すべての投稿を表示
ラベル final の投稿を表示しています。 すべての投稿を表示

2020/04/08

Java の final の仕様(3) - final フィールドのセマンティクスの有用性と仕組み

final フィールドのセマンティクス

final フィールドは初期化されたら変更されることはありません。そのため、final フィールドへのアクセスと、通常のフィールドへのアクセスは、その意味するところ (セマンティクス) が少し異なってきます。例えば、通常のフィールドの内容の参照は、「そのタイミングでの値」を取得するという意味を持ちますが、final フィールドの場合は内容が変わりませんから、「そのタイミングでの」という意味は抜け落ちます。
Java は final フィールドのセマンティクスを活用して、メモリアクセスの最適化をしたり、同期化を減らしたり、セキュリティを担保したりしています。Java 言語仕様に沿って確認してみたいと思います。

2020/04/07

Java の final の仕様(2) - final クラス/メソッド

(1) - final 変数 に続いて、今回は final クラスと final メソッドの話です。こちらは final 変数ほど難しくはありません。

Java の final の仕様(1) - final 変数

Java の final の仕様について検索している方が多いように見受けられます。final キーワードは、変数、クラス、フィールド、メソッドの宣言に付加できますが、どういう意味になるかは簡単なようで意外にややこしいものです。Java 言語仕様に基づいてきっちり理解しておきましょう。
まず、final 変数について見ていきたいと思います。final クラス/メソッドについては次の記事をご覧ください。