Java是否支持枚举的非增量值?

时间:2018-05-03 12:48:26

标签: java enums

我有一个定义Map<Integer, String> commands变量的类,其中Integer是命令编号,String是它的名称。

我没有将其设为enum的原因是我认为enum中的值必须是连续的, id est 增量一个(但命令键不是)。看了下面的代码,我觉得我的这个假设是错误的:

public enum HttpStatusCode {
 OK(200), NO_CONTENT(204), NOT_FOUND(404) /* .... */ ;
}

枚举中的值是否必须为每个值递增一个值,或者允许值的间隙?

1 个答案:

答案 0 :(得分:2)

允许间隙,实际上您可以定义实际的构造函数。

public enum HttpStatusCode {
   OK(200), NO_CONTENT(204), NOT_FOUND(404);
   private int status;
   private HttpStatusCode(int st) { status = st; }
   public int getStatus() { return status; }       
}

您仍然可以通过ordinal()获得增量值。