2013-12-20 15 views

回答

1

在Java中有一定的侷限性,枚舉類型充當聲明瞭其獨特的一類名稱。它與其他任何設計用於創建常量值的類非常相似。最近,我還遇到了一個消息,在Java中枚舉聲明之前,創建了一個類枚舉類。就像在這個問題上提出的文章一樣,JVM 1.5之前的基於類的枚舉被廣泛使用。

您可以檢查此來源:http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html

我認爲這是關於Java枚舉一個很好的解釋,爲什麼他們被創建。該文章聲稱Enum的3個優點:

1)類型安全。

2)除非這個類完全工作,否則Enum類很容易出現打印問題。當編碼員希望返回字符串結果時,返回一個原始值。根據我的經驗,在課堂上增加一些內容,這是可以避免的。但問題是,編碼器是否方便?

3)同樣,訪問基於類的一個實例。因此,編碼器不能直接訪問Enum選項。編碼器必須使用類名稱。

因此:爲了方便和代碼可讀性問題,枚舉是一個不錯的選擇。另外,枚舉結構類似於嵌套在載體類中的單個類。如果編碼人員想要增強Enum Design並創建他們自己的風格,他們可以回到舊的手動編碼的基於類的系統。

2

Java標準枚舉實現已經完全基於類 - 您可以在標準Java枚舉中定義任何您喜歡的方法,成員變量等。

有這樣一個很好的說明與官方枚舉文檔中的例子:

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

此外,該EnumSetEnumMap,等集合類是非常強大和高效。 EnumSet與使用原始位域具有相似的性能!如果您使用適當的枚舉,則只能訪問這些類。

+0

那麼,不完全完全 - 你不能從另一個類繼承enum或擴展它。 –

+1

@AndreyChaschev相關:http://stackoverflow.com/q/1414755/1225328 – sp00m

4

您引用的Java文章是從2001年開始的。那時候,Java沒有枚舉,作者描述的方法是程序員過去常常用來解決Java缺陷的方法。 Java 5在2004年引入了枚舉,現在舊的模式已經過時。所以你的同事們應該使用枚舉。

1

主要區別在於Java的枚舉更加簡單,不能切換基於C#的枚舉類實現,而基於枚舉的類更多的是類而不是枚舉數據類型,即它可以被擴展。而枚舉不能從另一個類派生,並且不能擴展。

的Java替代了基於C#的枚舉類也能像:

public abstract static class CreditCard { 
    enum CreditCardType{ 
     AMERICAN_EXPRESS, MASTER, VISA, DISCOVER; 
    } 

    CreditCardType type; 

    public abstract void operation1(); 
    public abstract void operation2(); 
} 
0

HI我會建議使用枚舉,如果你知道如何使用它。 ,因爲他們有很多原因有些是

  1. 使用較少的內存
  2. 有一些恆定值
  3. 更少的處理時間
  4. 容易理解
  5. 可重用性
  6. 易於調試

就像它有很多adva ntage但其他手是具有很多缺點也很喜歡

  1. 有限的使用意味着我們正在用枚舉
相關問題