2013-03-06 174 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