2013-03-06 176 views
0

我終於有理由在Java中實現enum,並且在1.6中發現它是無效類型。所以我宣佈枚舉爲是枚舉Java中的枚舉

public enum MyEnum = {A=0, B=1, C=3}; 

並且在Eclipse中得到錯誤無效類型。

+0

有幾百萬個在線枚舉代碼示例。你還沒有試圖比較一個單一的,因爲他們都會解決你的問題。下一次,你應該至少做一個基本的谷歌搜索(如'java enum example')... – brimborium 2013-03-06 14:51:04

回答

3

Java enums與C和C++ enums完全不同。最大的區別是enum常量是成熟的對象而不是編譯時整數常量。

在你的例子中,ABC是對象。因此像A=0, B=1, C=3這樣的結構是不允許的。我建議看一看tutorial

如果爲數值與enum常量關聯,可以實現像這樣類似的效果:

public enum MyEnum { 
    A(0), B(1), C(3); 
    public final int val; 
    private MyEnum(int val) { 
     this.val = val; 
    } 
} 

已經做到了這一點,您可以使用訪問值MyEnum.A.val

+0

你可以,但他們會成爲枚舉對象的一部分,就像[行星示例](http:// docs.oracle.com/javase/tutorial/java/javaOO/enum.html)。正確的措辭可能是「它們不是數字,而是包含*數字值的對象」 – eis 2013-03-06 14:52:23

7

這不是他們如何使用。見的例子在http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html,如

public enum Day { 
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY 
} 

Java的枚舉是比強大得多,比如,C#。它們(幾乎)是完整的對象,因此不能用一個數字表示。但是他們可以包含一個數字,他們確實有一個ordinal number value

你可以有多少價值與

public enum MyEnum { 
    A(0), B(1), C(3); 

    private final int number; 
    MyEnum(int number) { 
     this.number = number; 
    } 
} 
+0

抱歉,無法一次回覆所有回覆,因此我會回覆第1條。由於所有書籍都沒有提到「枚舉」或「枚舉」。 Java枚舉definitly不等於C/C++或Pascal。 – user931501 2013-03-08 02:52:11

0
public enum ModuleType {A,B,C} 
3

在Java中,enum是一種類型,但它與整數兼容。枚舉對象比基元更接近類,因爲它們可以有方法,成員變量等等。

的Java可以讓你得到你通過添加int成員的枚舉,和不同的初始化它爲不同的枚舉成員,這樣想要的效果:

public enum MyEnum { 
    A(1), B(2), C(3); 
    int val; 
    private MyEnum (int v) { 
     val = v; 
    } 
    public int value() { 
     return val; 
    } 
}; 

現在你enum的每個成員都有一個公共方法value(),它返回與枚舉的相應元素關聯的整數值。

2

你不能這樣做,因爲你這樣做。 enum定義在java中通過以下方式

enum myenum{a,b,c,d} 
0

要回答你的問題:enum在技術上是不是一個類型。因此,您不能像嘗試過那樣定義類型爲enum的變量。

enum是定義作爲特殊數據類型的枚舉(縮寫爲enum)類型的關鍵字。 一旦定義了枚舉類型(非常類似於如何定義類),可以使用枚舉類型的名稱引用它。請檢查enum types documentation