第31条:用实例域代替序数
2017-06-13 本文已影响0人
HHJG
问题:
实现一个枚举,要求:Fruit(水果)枚举方法内有三个属性,分别是:APPLE(苹果)-1、PEAR(梨)-2、ORANGE(橘子)-3
枚举类型会自动生成一个ordinal()方法,返回常量所处的位置索引。.
但是这种方法存在一些问题:
1、以后重排序,会破坏numberOfFruit()
2、这种方法得出的常量对应的int值一定是唯一的,但有时我们要不唯一
优化
结论:
永远不要根据枚举的序数导出与他关联的值,而是要将它保存在一个实例域中。
拓展
后台输出结果是什么?
结果: