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

所有的枚举都有一个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;
            }
        }

你可能感兴趣的:(EffectiveJava)