2011-07-06 7 views
6

二行目の意味は何ですか:finalクラスのインスタンスへの参照をfinalとして宣言するのはなぜですか?

public final class A {} 
final A obj1=new A(); 

Aがすでに不変であるなら、なぜ1はおそらくobj1決勝を作りたいでしょうか? (ちょうどそれをユニークなメモリ参照に固執させるためです)。

+0

ナッシングでそれを使用できることを意味しますサンプルコードでは、不変性を意味します。 – Robin

答えて

15

final第1行目は、オブジェクトが拡張のために閉じられていることを意味します。それをサブクラス化することはできません。

final 2行目に、変数を再割り当てできないことを意味します。

2

まず、Aはあなたにはfinalと宣言するだけでは変更できません。

最終的な変数は変更できません。 obj1がフィールドの場合、これは可変性を強制します(final classとは異なります)。

それはローカル変数である場合、それはあなたが安全に匿名クラス(そうでない場合、コンパイラは、匿名クラス本体が実行されている間、それは/前に時々変化し得ることはありません確認することはできません)

関連する問題