原文:局部內部類訪問它所在方法的局部變量時,要求該局部變量必須聲明為final的原因

這是java的一條規則。那么為什么會有這條規則呢 要想弄懂這個問題,就需要弄懂局部內部類對象和局部變量的生命周期誰更長的問題。 首先,看一段代碼,以沒有將變量聲明為final的代碼作為例子,代碼如下: 如上面的第 行代碼所示,變量x沒有被聲明為final,如果是這樣的話,當執行完第 行的outMethod 方法后,outMethod 方法將出棧,出棧后outMethod 方法里面定義的所有變量 ...

2018-05-11 22:12 1 2522 推薦指數:

查看詳情

為什么java內部類訪問局部變量必須聲明為final

https://blog.csdn.net/z55887/article/details/49229491 先拋出讓我疑惑了很久的一個問題 編程,在線程中使用局部變量時候經常編譯器會提示:局部變量必須聲明為final package test; public class ...

Thu Jul 04 06:14:00 CST 2019 0 783
為什么匿名內部類只能訪問所在方法中的final類型的局部變量

  大部分時候,類被定義成一個獨立的程序單元。在某些情況下,也會把一個類放在另一個類的內部定義,這個定義在其他類內部的類就被稱為內部類,包含內部類的類也被稱為外部類。   對於上面的成員內部類,一般做法是在Outer中寫一個返回Inner類對象的方法 ...

Fri Mar 04 05:12:00 CST 2016 3 10034
內部類訪問局部變量的時候,為什么變量必須加上final修飾

這里的局部變量就是在類方法中的變量,能訪問方法變量的類當然也是局部內部類了。我們都知道,局部變量在所處的函數執行完之后就釋放了,但是內部類對象如果還有引用指向的話它是還存在的。例如下面的代碼: class Outer{ public static void main(String[] args ...

Tue Aug 02 23:12:00 CST 2016 0 8054
內部類訪問局部變量必須加final

(1)內部類是外部類的一個成員,就像外部類的成員方法一樣,所以內部類有權限訪問部類的所有成員,包括private的。 (2)內部類不能訪問部類方法中的局部變量,除非變量final的(一般發生在方法中定義的內部類)。這是因為局部變量的生命周期原因 ...

Wed Sep 09 17:36:00 CST 2015 0 2040
內部類訪問局部變量,為什么需要加final關鍵字

變量的作用域的問題,因為匿名內部類是出現在一個方法內部的,如果它要訪問這個方法的參數或者方法中定義的變量,則這些參數和變量必須被修飾為final。因為雖然匿名內部類方法內部,但實際編譯的時候,內部類編譯成Outer.Inner,這說明內部類所處的位置和外部類中的方法處在同一個等級上,外部類 ...

Tue Oct 29 22:16:00 CST 2019 0 440
局部內部類訪問局部變量

局部內部類是指位於方法內的類,局部內部類若要訪問所在方法內的變量,則該變量必須是final修飾的。 Inner是位於方法main()內的局部內部類,若要訪問方法內的局部變量a,則a應當使用final修飾。 被內部類訪問局部變量會被拷貝一份到內部類中,即Inner中 ...

Tue Aug 06 23:43:00 CST 2019 1 984
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM