我有一个定义Map<Integer, String> commands
变量的类,其中Integer是命令编号,String是它的名称。
我没有将其设为enum
的原因是我认为enum
中的值必须是连续的, id est 增量一个(但命令键不是)。看了下面的代码,我觉得我的这个假设是错误的:
public enum HttpStatusCode {
OK(200), NO_CONTENT(204), NOT_FOUND(404) /* .... */ ;
}
枚举中的值是否必须为每个值递增一个值,或者允许值的间隙?
答案 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()
获得增量值。