枚举是Java中的一种类型

时间:2013-03-06 14:47:30

标签: java

我终于有理由在Java中实现enum并且在1.6中发现它是无效的类型。所以我将枚举声明为

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

并在Eclipse中获取错误无效类型。

6 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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

来访问这些值

答案 2 :(得分: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(),它返回与枚举的相应元素关联的整数值。

答案 3 :(得分:2)

你做不到这一点。 enum以下列方式在java中定义

enum myenum{a,b,c,d}

答案 4 :(得分:0)

public enum ModuleType {A,B,C}

答案 5 :(得分:0)

要回答您的问题:enum在技术上不是一种类型。因此,您无法像尝试那样定义enum类型的变量。

enum是一个定义枚举(缩写为枚举)类型的关键字,它是一种特殊的数据类型。 一旦定义了枚举类型(非常类似于定义类的方式),就可以使用枚举类型的名称来引用它。请查看enum types documentation