class NeiClass3{ public static void main(String[] args)? { A a = new A(); a.show(); }}class A{ int num1 = 10; //內(nèi)部類B class B { int num2 = 20; } //方法 public void show(){ final int num3 = 30; //????????????????????? //局部內(nèi)部類 class C { int num4 = 40; public void show2(){ //System.out.println("局部內(nèi)部類show"+num4); System.out.println("局部內(nèi)部類show"+num3); //System.out.println("局部內(nèi)部類show"+num1); } } new C().show2(); }}
3 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個贊
是的,在 1.8 之前,“本地(local)變量”必須聲明為 final 才能被“本地內(nèi)部類(local inner class)”所訪問。
在 1.8 中限制放寬了一些:不必須用 final 修飾,只要是“事實(shí)常量”就可被 local inner class 訪問。

望遠(yuǎn)
TA貢獻(xiàn)1017條經(jīng)驗(yàn) 獲得超1032個贊
并沒有這個限制,final這是修飾常量的,
局部變量用final修飾嗎?所以既然是變量就不能用final來修飾。
常量只能在定義的時候完成初始化,并禁止修改常量值。
對方法的局部變量只是要求在定義時完成初始化即給定初值(雖然要求給定初值,但是依舊是變量),因?yàn)榫植孔兞康闹等绻怀跏蓟褪且粋€隨機(jī)值,不像屬性一般,即便是沒有初始化也有一個初始值如:
class?Test{ ????public?int?num;//默認(rèn)初值為0 ????public?void?test() ????{ ????????int?sum=0;//局部變量要求在定義時完成初始化即給定初值 ????} }
添加回答
舉報(bào)
0/150
提交
取消