同じメソッドで宣言された匿名の内部クラス内でメソッドのローカル変数を使用できない理由が知りたいです。内部クラスへの参照が存在し続ける可能性がある一方で、メソッドの完了後に変数がコールスタックから削除される理由は、私には正当化されないようです。
私の疑問:
メソッドの外でクラスをインスタンス化できない場合、ローカル変数を使用させない理由は何でしょうか?
議論を最終的なものにすることで、それが受け入れられるのはなぜですか? これらもコールスタックにありませんか?
内部クラスはメソッドの外部でインスタンス化できないため、内部クラスへの参照を別のメソッドに渡す方法と、別のメソッドの参照変数に割り当てる方法を教えてください。代入できる変数の型は何ですか?
次に例を示します。
public class MyOuter2 {
int num = 1; //Outer instance variable
void doStuff(final int x) { //Outer instance Method with final variable
// void doStuff( int x) { //Final removed, compiler error
class MyInner { //Outer Method inner class
public void seeOuter() {
System.out.println("Outer num=" + num);
System.out.println(x);
}
}
MyInner inner = new MyInner();
inner.seeOuter();
readInnerObject(inner); //any method that pass inner object
}
public void readInnerObject(Object i ){
MyOuter2 outer = new MyOuter2(); // how to receive it???????????
}
public static void main(String args[]) {
MyOuter2 o = new MyOuter2();
o.doStuff(2);
}
}