局部內部類是指在外部類的成員方法中定義的類,在調用時,必須在局部內部類所在的方法中建立對象spa
//局部內部類的調用必須在其所在的方法中訪問 class Outer { public void run(){ int final num = 20; class Inner { public void show() { System.out.println(num); #局部內部類訪問局部變量,局部變量必須被聲明爲最終類型,即final
} } Inner i = new Inner(); i.show(); } } public class Demo1_InnerClass { public static void main(String[] args){ Outer o = new Outer(); o.run(); } }
注意:code
* 局部內部類訪問局部變量必須用final修飾
* 局部內部類在訪問他所在方法中的局部變量必須用final修飾,爲何?
由於當調用這個方法時,局部變量若是沒有用final修飾,他的生命週期和方法的生命週期是同樣的,當方法彈棧,這個局部變量也會消失,那麼若是局部內部類對象尚未立刻消失想用這個局部變量,就沒有了,若是用final修飾會在類加載的時候進入常量池,即便方法彈棧,常量池的常量還在,也能夠繼續使用對象
可是jdk1.8取消了這個事情,因此我認爲這是個bugblog