网站预算,我的网站织梦,财政网站 建设方案,铁路建设网站多少许多枚举通常与单个 int 值关联。所有枚举都有一个 ordinal 方法#xff0c;它返回每个枚举常量类型的数值位置。你可能想从序数中派生一个关联的 int 值#xff1a;
// Abuse of ordinal to derive an associated value - DONT DO THIS
public enum Ensemble {SOLO, DUET, …许多枚举通常与单个 int 值关联。所有枚举都有一个 ordinal 方法它返回每个枚举常量类型的数值位置。你可能想从序数中派生一个关联的 int 值
// Abuse of ordinal to derive an associated value - DONT DO THIS
public enum Ensemble {SOLO, DUET, TRIO, QUARTET, QUINTET,SEXTET, SEPTET, OCTET, NONET, DECTET;public int numberOfMusicians() { return ordinal() 1; }
} 虽然这个枚举能正常工作但对于维护来说则是一场噩梦。如果常量被重新排序numberOfMusicians 方法将会中断。 幸运的是这些问题有一个简单的解决方案。 永远不要从枚举的序号中得出与它相关的值; 请将其保存在实例属性中
public enum Ensemble {SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),NONET(9), DECTET(10), TRIPLE_QUARTET(12);private final int numberOfMusicians;Ensemble(int size) { this.numberOfMusicians size; }public int numberOfMusicians() { return numberOfMusicians; }
} 枚举规范对此 ordinal 方法说道“大多数程序员对这种方法没有用处。 它被设计用于基于枚举的通用数据结构如 EnumSet 和 EnumMap 。“除非你在编写这样数据结构的代码否则最好避免用 ordinal 方法。