在 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.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++ 示例的。
在 java 中,枚举是对象,而不是整数。这意味着它们可以有行为而不仅仅是代表一个值。所以理想情况下,每个枚举值的行为都应该封装在枚举本身中:
enum Operation {
ADD {
public void perform() {
// do something
}
},
ERASE {
public void perform() {
// do something else
}
},
...
abstract public void perform();
}
Operation.values()[option].perform();
我想将这段 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.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++ 示例的。
在 java 中,枚举是对象,而不是整数。这意味着它们可以有行为而不仅仅是代表一个值。所以理想情况下,每个枚举值的行为都应该封装在枚举本身中:
enum Operation {
ADD {
public void perform() {
// do something
}
},
ERASE {
public void perform() {
// do something else
}
},
...
abstract public void perform();
}
Operation.values()[option].perform();