什麼時候應該使用未初始化的靜態最終變量?我知道一個未初始化的靜態最終變量只能在靜態初始化塊中賦值,但我想不出有什麼實際用途。什麼時候應該使用未初始化的靜態最終變量?
回答
我假設你的意思是:
public static final Object obj;
與沒有明確分配初始值?
您可以根據只能在運行時發生的某些計算將它分配到static
塊中,如讀取某些屬性文件以創建在編譯時未知的應用程序範圍內的常量。
當初始化變量不能在一行中完成時使用它。例如:
private static final Map<String, String> CACHE;
static {
Map<String, String> cache = new HashMap<String, String>();
cache.put("foo", "bar");
cache.put("zim", "bam");
// lots of other entries
CACHE = Collections.unmodifiableMap(cache);
}
基本上,如果您需要指定一個不能在單個表達式中輕鬆表示的值。例如,您可能想要執行一些邏輯來構建不可變映射,然後分配它。
一般來說,更具可讀性把「建設」邏輯到一個單獨的靜態方法和使用,在正常作業,但:
private static final Map<String, String> FOO_MAP = buildFooMap();
謝謝!它給了我更好的解釋。 – 2012-12-31 10:40:05
靜態+最終
總之,
靜態 - 以使其爲類變量 - 獨立對象的(可通往每個對象總是相同的位置)
Final - 使它成爲一個常數(如果final是在變量ofcourse!之前!)
我們在哪裏只需要靜態?
=>可以計算一個對象的實例數量。
我們在哪裏只需要最終?
=>好,讓事情不變!
我們在哪裏需要static + final?
=>使變量可以訪問每個對象,並使一個常量。爲COLOR創建類可能是。
對於空白靜態變量,初始化由靜態塊完成。
public class StaticDemo
{
private static final String name;
static
{
name = "yash";
}
}
爲什麼使用空白的?因爲可能是你一開始就無法初始化。我接受前一個的。
如果靜態字段的初始化程序可能會引發異常,則無法將其初始化爲一行,但必須具有靜態塊或靜態方法。
謝謝!它可以是未初始化的靜態最終變量的一種用法。 – 2012-12-31 10:38:29
靜態final變量必須在創建時初始化,與空白最終變量不同,不能將初始化推遲到構造函數,因爲它們是靜態的。
- 1. 初始化最終靜態變量
- 2. 初始化靜態最終變量
- 3. 什麼時候全局靜態常量變量被初始化?
- 4. 什麼時候一個靜態變量是真正初始化
- 5. 我什麼時候應該初始化Golang變量
- 6. 什麼時候javascript初始化變量?
- 7. 什麼時候應該初始化一個新的變量,什麼時候不應該?
- 8. 使用另一個最終靜態初始化最終靜態變量時的內存消耗
- 9. 靜態變量未初始化
- 10. 靜態變量未初始化
- 11. 最終變量初始化
- 12. 靜態變量初始化
- 13. 靜態變量初始化
- 14. 初始化靜態變量
- 15. 靜態變量初始化
- 16. 在C99中使用靜態變量初始化靜態變量
- 17. 什麼時候使用swift初始化viewController全局變量
- 18. 初始化對象時,實例變量始終未初始化?
- 19. 爲什麼靜態最終變量使用靜態方法初始化需要同步?
- 20. 捕獲異常而初始化靜態最終變量
- 21. 行爲差異:'null'初始化的最終靜態成員和'null'已初始化的最終本地變量
- 22. 什麼時候會靜態類初始化?
- 23. 什麼時候靜態字段內聯初始化發生
- 24. 初始化時內存將分配給「未初始化的靜態變量」嗎?
- 25. 未初始化的常量NumberHelper在做什麼時候包括
- 26. 什麼時候發生全局變量的初始化?
- 27. 我應該什麼時候初始化對象
- 28. 什麼時候應該初始化javascript屬性?
- 29. Vuejs - 什麼時候應該jQuery插件初始化
- 30. 初始化自身靜態變量的
也許_never_? – 2012-01-31 17:43:48
「空白」是什麼意思?你的意思是一個'static final'變量被初始化爲'null'嗎?或者你只是指任何一種'static final'變量('private static final','public static final'等)? – 2012-01-31 17:44:03
他意味着空白,因爲在未初始化。 – fivedigit 2012-01-31 17:45:44