美文网首页Effective Java
第31条:用实例域代替序数

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

作者: HHJG | 来源:发表于2017-06-13 14:15 被阅读0次

    问题:

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

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

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

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

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

    优化

    结论:

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

    拓展

    后台输出结果是什么?

    结果:


    相关文章

      网友评论

        本文标题:第31条:用实例域代替序数

        本文链接:https://www.haomeiwen.com/subject/dvsdqxtx.html