我很好奇爲什麼我們不能在同一個方法中聲明的匿名內部類中使用方法的局部變量。這個變量在方法完成後從調用堆棧中移除,而對內部類的引用可能繼續存在的原因對我來說似乎不合理。在內部類中使用局部變量
我的疑惑:
如果該類不能超過什麼能不讓它使用局部變量的原因,這種方法之外實例化?
爲什麼最終讓參數變得可以接受?這些也不在調用堆棧上嗎?
由於內部類無法在方法外部實例化,因此如何將內部類的引用傳遞給另一個方法,以及如何將其分配給另一個方法中的引用變量?它可以分配給什麼類型的變量?
下面是一個例子:
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);
}
}
請給我們一個乾淨的格式的代碼示例。通過讓我們努力瞭解您的樣品,您正在拍攝自己的腳。 –