原文:為什么在方法中定義的內部類只能訪問方法中的final類型的局部變量?

class InOut String str new String Between public void amethod final int iArgs int it class Bicycle public void sayHello System.out.println str System.out.println iArgs System.out.println it 此處編譯出錯:InO ...

2012-09-28 17:13 0 4087 推薦指數:

查看詳情

為什么匿名內部類只能訪問其所在方法final類型局部變量

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

Fri Mar 04 05:12:00 CST 2016 3 10034
JAVA內部類(匿名內部類)訪問局部變量為什么要用final修飾?

本文主要記錄:在JAVA,(局部)內部類訪問某個局部變量,為什么這個局部變量一定需要用final 關鍵字修飾? 首先,什么是局部變量?這里的局部是:在方法里面定義變量。 因此,內部類能夠訪問局部變量,說明這個內部類不是在類定義內部類,而是在方法定義內部類,稱之為:局部內部類 ...

Sun Aug 07 01:21:00 CST 2016 5 11312
內部類訪問局部變量的時候,為什么變量必須加上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的原因

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

Sat May 12 06:12:00 CST 2018 1 2522
Java基礎-內部類-為什么局部和匿名內部類只能訪問局部final變量

先看下面這段代碼:   這段代碼會被編譯成兩個class文件:Test.class和Test1.class。默認情況下,編譯器會為匿名內部類局部內部類起名為Outterx.class(x為正整數)。   根據上圖可知,test方法的匿名內部類的名字被起為 Test ...

Mon May 11 00:33:00 CST 2015 1 2265
為什么Java匿名內部類訪問方法參數或方法局部變量需要被final修飾

分析 1、內部類(不論是否是匿名內部類)可訪問部類變量(包括外部類的類變量、實例變量、外部類方法局部變量等)、方法:可修改變量值、調用方法等。內部類定義時的位置有兩種: 在外部類方法內:此時該內部類只能是匿名內部類(語法上不支持在方法定義非匿名類)。此時內部類訪問上述所有變量 ...

Wed Jun 21 19:57:00 CST 2017 0 3698
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM