最終變量可訪問性
回答
並非所有的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. Java - 最終變量
- 9. Actionevent最終變量?
- 10. 本地變量訪問內部類需要聲明爲最終
- 11. 如何訪問Java內部類中的非最終變量號?
- 12. 可變訪問性能
- 13. 可變變量可從閉包訪問
- 14. 變量不可訪問
- 15. 變更的最終屬性
- 16. JavaScript類可訪問性變量範圍問題
- 17. Android的最終變量
- 18. 最終變量初始化
- 19. 靜態最終變量
- 20. Android最終變量錯誤
- 21. 靜態最終變量
- 22. 訪問變量
- 23. 訪問變量
- 24. 訪問變量
- 25. 變量訪問
- 26. 訪問變量
- 27. 訪問變量
- 28. 訪問變量
- 29. 最佳實踐 - 訪問對象變量
- 30. 最終變量和非最終變量var |之間的快速差異最後讓和非最終讓
你想舉個例子嗎? – 2010-01-13 19:58:48