我搜索了計算器上這樣的問題,但用枚舉的主要好處沒有答案。有時我需要一些全球價值的堆,我知道枚舉是更好的做法,但我不能明白爲什麼?
0
A
回答
1
Java語言指南lists several ways in which using integer constants for enumerated types is inferior to using enums。我引述:
在以前的版本,來表示一個枚舉類型的標準方式是INT枚舉模式:
// int Enum Pattern - has severe problems!
public static final int SEASON_WINTER = 0;
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
該圖案具有很多問題,如:
- 不類型安全 - 由於一個季節只是一個整數,你可以在任何需要季節的時候通過任何 其他整數值,或者將兩個季節 加在一起(這是沒有意義的)。
- 沒有命名空間 - 你必須前綴一個int枚舉 常量用於字符串(在這種情況下SEASON_)與其他INT枚舉類型 避免衝突。
- 脆性 - 因爲int 枚舉是編譯時常量,所以它們被編譯到 使用它們的客戶端中。如果在兩個現有常量 之間添加新常數或訂單已更改,則必須重新編譯客戶端。如果他們不是,他們仍然會運行,但他們的行爲將是不確定的。
- 印刷 值是無信息 - 因爲他們只是整數,如果打印 一出所有你得到的是一個數字,它告訴你什麼什麼 它代表,甚至它是什麼類型。
[端報價]
-1
頁面http://well-spun.co.uk/code_templates/enums.php可以生成在C++,Java或PHP類型安全枚舉的代碼。它使用靜態。
相關問題
- 1. 爲什麼枚舉編譯爲常量而不是靜態值?
- 2. 爲什麼要使用枚舉而不是常量?
- 3. 爲什麼Phobos使用枚舉常量?
- 4. 爲什麼使用靜態「常量」而不是實際值?
- 5. 爲什麼`std :: byte`是一個枚舉類而不是類?
- 6. 爲什麼使用字符串常量與枚舉常量?
- 7. Java枚舉與靜態常量
- 8. 帶數字常量的枚舉類型
- 9. Java枚舉,靜態類變量 - 爲什麼我不能這樣做?
- 10. 枚舉爲int,爲什麼使用類型轉換爲int而不是Convert.ToInt32(Enum)?
- 11. 枚舉:使用枚舉和類與靜態變量之間的區別
- 12. 爲什麼使用singleton而不是靜態類?
- 13. 在枚舉上使用NSString常量的原因是什麼?
- 14. 使用不帶變量名的枚舉
- 15. 爲什麼Java不允許開啓靜態枚舉?
- 16. 爲什麼BCL集合使用結構枚舉器而不是類?
- 17. 動態加載Java枚舉類和枚舉常量
- 18. 如果你總是用枚舉,而不是常量在Java中
- 19. 爲什麼AbstractFactoryUnit具有動態而不是靜態多態?
- 20. 如何將現有靜態常量包裝到枚舉中?
- 21. MSVC常量枚舉類型
- 22. 靜態valueOf()方法的要點是什麼? (枚舉)
- 23. Java7/WatchEvent - 爲什麼它不是枚舉?
- 24. 爲什麼Collections.enumeration附帶枚舉()方法
- 25. 爲什麼Java枚舉常量初始化不完整?
- 26. 帶常量的單例枚舉
- 27. 枚舉常量
- 28. 如何每次使用枚舉而不指定枚舉類?
- 29. WPF的ObjectDataProvider與靜態類枚舉
- 30. Msbuild.exe中的靜態枚舉類錯誤
另外,http://stackoverflow.com/questions/5107946/enumerations-vs-int-flags,http://stackoverflow.com/questions/2077634/enum-in-java-advantages,http:// stackoverflow .com/questions/4709175/why-and-what-for-java-enum,可能還有更多...... –