2011-09-08 76 views
0

可能重複:
Enumerations: Why? When?爲什麼使用枚舉而不是帶有靜態常量的類?

我搜索了計算器上這樣的問題,但用枚舉的主要好處沒有答案。有時我需要一些全球價值的堆,我知道枚舉是更好的做法,但我不能明白爲什麼?

+0

另外,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,可能還有更多...... –

回答

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 枚舉是編譯時常量,所以它們被編譯到 使用它們的客戶端中。如果在兩個現有常量 之間添加新常數或訂單已更改,則必須重新編譯客戶端。如果他們不是,他們仍然會運行,但他們的行爲將是不確定的。
  • 印刷 值是無信息 - 因爲他們只是整數,如果打印 一出所有你得到的是一個數字,它告訴你什麼什麼 它代表,甚至它是什麼類型。

[端報價]

相關問題