我很好奇为什么我们不能在同一方法中声明的匿名内部类中使用方法的局部变量。在方法完成后从调用堆栈中删除变量而对内部类的引用可能继续存在的原因对我来说似乎并不合理。
我的疑惑:
如果类不能在方法之外实例化,那么不让它使用局部变量的原因是什么?
为什么使论点成为最终论点使其可以接受?这些也不在调用堆栈上吗?
既然内部类不能在方法外实例化,那么如何将内部类的引用传递给另一个方法,又如何将它分配给另一个方法中的引用变量呢?它可以分配给什么类型的变量?
这是一个例子:
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);
}
}