局部内部類:在一個類的方法内部定義另外一個類,那麼另外一個類就稱作為局部内部類。
局部内部類要注意的細節:
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年6月13日21:02:38
* Desc:局部内部類:在一個類的方法内部定義另外一個類,那麼另外一個類就稱作為局部内部類。
局部内部類要注意的細節:
1.如果局部内部類通路了一個局部變量,那麼該局部變量必須使用final修飾
*/
class Outer
{
String name = "外部類的name ";
public void test(){
//局部變量
final int y = 100; //y什麼時候從記憶體中消失?方法執行完畢之後y消失。
//局部内部類
class Inner{/*當test方法執行完畢之後,那麼y馬上從記憶體中消失,
而Inner對象在方法執行完畢的時候還沒有從記憶體中消失,
而inner對象的print方法還在通路着y變量,這時候的y變量已經消失了,
那麼就給人感覺y的生命周期已經被延長了。
解決方案:如果一個局部内部類通路一個局部變量的時候,
那麼就讓該局部類内部類通路這個局部變量的複制品。
*/
int x = 10;
public void print(){
System.out.println("這是局部内部類的print方法。"+ name + y);
}
}
Inner inner = new Inner(); //inner對象什麼時候消失?Inner對象的生命周期比局部變量y的生命周期要長
inner.print();
}
}
class Demo60
{
public static void main(String[] args)
{
Outer outer = new Outer();
outer.test();
}
}