final
私はそれが変数に適用されたときに変数を別のものに再割り当てすることを可能にしないキーワードであることを知って育ちました。「変数が最終的な場合、それは定数です」は多くの要約であり、私はその定義のファンではありませんが、概念を念頭に置いておくのはおそらく良い方法です. 私はそれを言いたいだけですyou cannot change the value of the variable
(「値」が何を意味するにせよ)。
私の人生は幸せでしたが、ある日、私はもっと深く見てみましたmethod local inner classes
...
メソッド内で定義された内部クラスは、メソッド自体で定義された変数にアクセスできません。なんで?クラスがヒープに存在し、メソッドが完了した後も存在し続ける可能性があるため (クラスの有効な参照が渡され、別の場所に格納される可能性があります)、それらの変数はスタックに存在し、メソッドが戻ると消滅します。内部クラスが存在しない変数に後でアクセスしようとするのは望ましくありません。
完全。それは理にかなっている。優秀な!そして、これらの変数を final と宣言しない限り.....そうすれば、クラスはそれらにアクセスでき、コンパイラはあなたを地獄に送りません...
WHY???
つまり、これはどんな魔法ですか?final は正確には何をするのでしょうか? また、メソッド ローカル 内部クラスについて説明するのを待たなければならなかったのはなぜですか? 最終的な変数がどこに定義されていても Heap に格納されると仮定すると、メソッドのローカル内部クラスを幸せにするという概念以外に他のアプリケーションはありますか?