用Java模拟C ++ Enum

时间:2015-02-02 20:47:52

标签: java c++ enums emulation

我想将这个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 Enums,因为我无法让他们像这样工作。

2 个答案:

答案 0 :(得分:1)

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

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

所以MyEnum.ADD的类型为MyEnum,等等。这允许使用枚举进行强大的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 ++示例。

答案 1 :(得分:0)

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

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

    abstract public void perform();
}

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