Я хочу перевести этот код 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, потому что не могу заставить их работать так.
В Java перечисления объекты, и перечисление создает Новый тип.
enum MyEnum {
ADD, ERASE, MODIFY, EXIT;
}
Так MyEnum.ADD
имеет тип MyEnum
и т. д. Это позволяет выполнять мощное ОО-программирование — инкапсуляцию, наследование — с перечислениями.
Если вы хотите конвертировать 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();