10.3局部内部类
局部內部類:在一個類的方法內部定義另外一個類,那么另外一個類就稱作為局部內部類
局部內部類的注意事項:1.如果局部 內部類訪問了一個局部變量,那么該局部變量必須使用final修飾
當test方法執行完畢后,那么y馬上從內存中消失,而Inner對象在方法執行完畢的時候還沒有從
內存中消失,而inner對象的print方法還在訪問y變量,這時候y變量已經消失,從而給你感覺y的生命周期被延長了。
解決方法:如果一個局部內部類訪問一個局部變量的時候,那么就讓該局部內部類訪問這個變量 的復制品。
class Outer {public void test (){class Inner{public void print(){System.out.println("局部內部類 ");}}} } class LocalInnerClass {public static void main(String[] args) {} }
class Outer {String name = "局部內部類的name";public void test(){//局部內部類final int y = 20;class Inner{/*當test方法執行完畢后,那么y馬上從內存中消失,而Inner對象在方法執行完畢的時候還沒有從內存中消失,而inner對象的print方法還在訪問y變量,這時候y變量已經消失,從而給你感覺y的生命周期被延長了。解決方法:如果一個局部內部類訪問一個局部變量的時候,那么就讓該局部內部類訪問這個變量 的復制品。*/int x = 10;public void print(){System.out.println("局部內部類 "+x+name+" final y = "+y);}}Inner inner = new Inner();inner.print();} } class LocalInnerClass {public static void main(String[] args) {Outer outer = new Outer();outer.test();} }
總結