Effective Java

第31条:用实例域代替序数

2017-06-13  本文已影响0人  HHJG

问题:

实现一个枚举,要求:Fruit(水果)枚举方法内有三个属性,分别是:APPLE(苹果)-1、PEAR(梨)-2、ORANGE(橘子)-3

枚举类型会自动生成一个ordinal()方法,返回常量所处的位置索引。.

但是这种方法存在一些问题:

1、以后重排序,会破坏numberOfFruit()

2、这种方法得出的常量对应的int值一定是唯一的,但有时我们要不唯一

优化

结论:

永远不要根据枚举的序数导出与他关联的值,而是要将它保存在一个实例域中。

拓展

后台输出结果是什么?

结果:


上一篇下一篇

猜你喜欢

热点阅读