在 Java 中模拟 C++ 枚举

Emulate a C++ Enum in Java

我想将这段 C++ 代码翻译成 Java 代码

#include <iostream>
enum {ADD=1, ERASE, MODIFY, EXIT};
int main() {
    int option;
    cin>>option;
    switch(option){
    case ADD: //do something . . .
         break;
    case ERASE: //do things . . .
    default:

我迷失了 Java 枚举,因为我无法让它们像这样工作。

在Java中,枚举是对象,一个枚举创建了一个新类型

enum MyEnum {
    ADD, ERASE, MODIFY, EXIT;
}

因此 MyEnum.ADDMyEnum 类型,等等。这允许强大的 OO 编程——封装、继承——使用枚举。

如果你想将 int 转换为 MyEnum,你可以编写一个方法来完成,或者使用枚举的索引。

MyEnum.values()[1];

如果你只想拥有使用现有类型的常量(例如int),只需

class MyConstants {
    public final static int ADD = 1;
    public final static int ERASE = 2;
    public final static int MODIFY = 3;
    public final static int EXIT = 4;
}

这实际上是最接近您的 C++ 示例的。

在 java 中,枚举是对象,而不是整数。这意味着它们可以有行为而不仅仅是代表一个值。所以理想情况下,每个枚举值的行为都应该封装在枚举本身中:

enum Operation {
    ADD {
        public void perform() {
            // do something
        }
    },
    ERASE {
        public void perform() {
            // do something else
        }
    },
    ...

    abstract public void perform();
}

Operation.values()[option].perform();