0

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

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

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

4

6 回答 6

7

这不是它们的使用方式。请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html中的示例,例如

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

Java 枚举比 C# 中的枚举要强大得多。它们(几乎)是成熟的对象,因此不能仅用数字表示。然而,它们可以包含一个数字,并且它们确实有一个序数值

你可以有数字值

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

    private final int number;
    MyEnum(int number) {
      this.number = number;
    }
}
于 2013-03-06T14:49:12.037 回答
3

Javaenums与 C 和 C++ 完全不同enums。最大的区别是enum常量是成熟的对象而不是编译时整数常量。

在您的示例中ABC是对象。因此A=0, B=1, C=3,不允许使用类似的构造。

我建议看一下教程

如果您必须将数值与enum常量相关联,则可以实现类似的效果,如下所示:

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

完成此操作后,您可以使用MyEnum.A.valetc访问这些值。

于 2013-03-06T14:48:41.590 回答
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()返回与枚举的相应元素关联的整数值。

于 2013-03-06T14:50:01.087 回答
2

你不能这样做。enum在java中定义如下

enum myenum{a,b,c,d}
于 2013-03-06T14:51:58.933 回答
0
public enum ModuleType {A,B,C}
于 2013-03-06T14:49:57.607 回答
0

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

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

于 2013-03-06T14:58:06.740 回答