В java-перечислениях сложные объекты, в то время как в C ++ каждый объект-перечисление связан с одним целочисленным значением. В Java вы можете иметь несколько атрибутов, связанных с одним значением перечисления:
enum MyCategory {
SPORT("The sport category", "sport.png"),
NEWS("the news category", "news.jpg");
private String description;
private String iconPath;
private MyCategory(String description, String iconPath) {
this.description = description;
this.iconPath = iconPath;
}
public String getDescription() {
return description;
}
public String getIconPath() {
return iconPath;
}
}
Кроме того, в Java вы можете switch
только числовые типы, строки и перечисления. Однако я не могу обобщить обычные перечисления в целом ...
РЕДАКТИРОВАТЬ Еще одна вещь, которую может сделать java-перечисление, это объявить операцию по значению (взято из java tutorial ):
public enum Operation {
PLUS { double eval(double x, double y) { return x + y; } },
MINUS { double eval(double x, double y) { return x - y; } },
TIMES { double eval(double x, double y) { return x * y; } },
DIVIDE { double eval(double x, double y) { return x / y; } };
// Do arithmetic op represented by this constant
abstract double eval(double x, double y);
}