【初心者】Java質問・相談スレッド54【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0117デフォルトの名無しさん
NGNGローカル変数Aが内部クラスで使われるコードがある場合、その内部クラス
のコンストラクタ時に、新しい同型の変数領域が割り当てられて、そこに
ローカル変数Aの「値」自体がコピーされる形となる。
普通に考えれば、内部クラスからローカル変数をアクセスするのは不可能
なのだが、上記の様に「同じ値」(参照値ではない事に注意)をアクセス
させて実質的には同じ行為をしてると見せかける事によって、内部クラス
からのローカル変数アクセスを実現させている。
その為、内部クラスコンストラクタ時に、そのローカル変数Aはfinal
つまり不変宣言されてなければならない。
あと、>>>115の解決法は、その引数Aをfinal int B=A;などとして
Bを内部クラスからアクセスさせるようにすればOK
■ このスレッドは過去ログ倉庫に格納されています