1. 程式人生 > >java內部類所訪問的區域性變數為什麼要加final

java內部類所訪問的區域性變數為什麼要加final

如果我們在一個類中宣告一個內部類,在這個內部類中訪問了原來類中的區域性變數,那麼這個區域性變數必須在原來的類中宣告成final,如圖:

class A
{
	final int a=1;;
	class B
	{
		int b=a;
	}
}

這是為什麼呢?

答案是,因為在原來的類中執行的函式之類的東西和在內部類中執行的東西是非同步進行的,所以原來類中的函式執行完畢,內部類中的可能還沒有執行完畢,這時候如果我們用什麼方法改變了原來類中區域性變數的值,可能會對內部類中執行的東西造成影響,因此,我們要宣告成final,這樣,原來類的區域性變數一經賦值便不能被更改,就不會影響內部類中的東西了。