Java Enum与C++和传统的Enum有什么不同?

Lax*_*n G 3 java enums

我们从java 1.5获得的枚举如何与C++和其他传统的Enum Type不同.

Bor*_*jev 5

在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;
   }
}
Run Code Online (Sandbox Code Playgroud)

此外,在java中,您switch只能使用数字类型,字符串和枚举.但是我无法将传统的枚举整体概括为......

编辑 java enums可以做的另一件事是声明每值操作(取自java教程):

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);
}
Run Code Online (Sandbox Code Playgroud)