2017-08-25 58 views
-3

切實最終代碼JPL 8:一種情況,有效,決賽

public void say() { 

    String b = "222"; // effectively final b 

    class A { 

     public A(String c) { 
      b = "123"; // error 
     } 

    } 

    b = "123"; // success; if b is final, it is an error 

} 

之間的區別是有沒有更詳細的區別嗎?

+0

你剛剛回答了你自己的問題。 – Moira

+0

effective final是一個變量,它在程序的整個執行過程中永遠不會改變它的值,而final是明確指定帶有final關鍵字的變量,告訴編譯器不要改變 – HJK

回答

0

如果你的變量在聲明後的影響(例如,任何時候你寫的「B =‘123’),那麼它是不是有效的決賽。

在內部類或嵌套類(如您的A類),你只能引用變量從外範圍(如b),它們有效地最後。

的限制同樣適用於從嵌套類衍生而來,例如lambda表達式構建體。

聲明變量與「最終」關鍵字是一種方便的方式,以確保您的變量是有效的最終。

相關問題