您的位置:首页 > Web前端

EffectiveJava(31) -- 使用实例域代替Enum的序数排序

2017-03-18 22:09 295 查看
所有的枚举都有一个ordinal方法,他返回每个枚举常量在类型中的数字位置.大多数程序员都不需要这个方法,它是设计成用于像EnumSet和EnumMap这种基于枚举的通用数据结构的.除非你在编写的是这种数据结构,否则最好完全避免使用ordinal方法.

ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。

当我们在对数组进行排序的时候,我们不应该根据枚举的序数导出与它关联的值,这将会使得你的方法后期的维护如噩梦一般,你要做的是将它保存在一个实例域中:

public enum Ensemble{
SOLO(1),DUET(2),TRIQ(3),QUARTET(4),QUINTET(5);

private final int numberOfMusicians;
Ensemble(int size){
this.numberOfMusicians = size;
}
public int numberOfMusicians(){
return numberOfMusicians;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  enum