最終變量可訪問性
回答
並非所有的final
變量都是編譯時間常量。只有static final
變量可以被編譯器替換爲編譯時常量。在某些情況下,final
修飾符僅用於確保const-correctness。
和static
方法不能訪問非靜態變量,因爲這些變量對同一類的不同實例可能具有不同的值。
如果你問爲什麼static
方法不能訪問final
實例變量(在[不正確]的假設下,最終成員變量總是在代碼中設置爲文字或常量值),因爲一個類的不同實例可以爲相同的實例變量(可以通過構造函數設置)設置不同的值。一個static
方法不知道該類的任何特定實例,並且只能訪問static final
變量。
static =在課堂上。
final =不改變它的值(但它是每個實例,如果它不是靜態的)。
通過examply你可以這樣做:
public class Weird
{
private static long number = System.getTimeInMilis();
private final long created = System.getTimeInMilis();
}
每次創建一個奇怪的物體會包含不同的價值創造。
但Weird.number的值將是加載類的時間。
一個更真實的例子:你可以創建一個「private final list = new ArrayList <...>」,你不會改變列表的引用,但是列表可以在需要時添加對象。 – helios 2010-01-13 20:01:43
...在賦值後不會更改值*。這是編譯器強制執行的,而不是jvm強制執行的 – 2010-01-13 21:21:52
- 1. 卡住訪問非最終變量?
- 2. 訪問變量沒有使它最終
- 3. 變量的可訪問性
- 4. 如何訪問變量外線程而不使變量成爲最終變量
- 5. Java實例變量可訪問性
- 6. MVC3控制器變量可訪問性
- 7. 最終變量
- 8. 訪問靜態最終性能
- 9. 訪問attr_accessor屬性變量
- 10. Java最終變量
- 11. Java - 最終變量
- 12. Actionevent最終變量?
- 13. 帶靜態訪問修飾符的最終變量
- 14. 本地變量訪問內部類需要聲明爲最終
- 15. 如何訪問Java內部類中的非最終變量號?
- 16. 在Java中訪問最終本地變量比類變量快嗎?
- 17. 可變訪問性能
- 18. 最終與非最終正常變量
- 19. 可變變量可從閉包訪問
- 20. 變量不可訪問?
- 21. 變量不可訪問
- 22. 使用Java最終變量如.NET只讀屬性可以嗎?
- 23. 線程終止時變量可見性
- 24. 作爲最終變量的變量「i」
- 25. 如何在C++中定義最終變量(可變常量)?
- 26. 變更的最終屬性
- 27. JavaScript類可訪問性變量範圍問題
- 28. Android的最終變量
- 29. 最終變量初始化
- 30. 靜態最終變量
你想舉個例子嗎? – 2010-01-13 19:58:48