当前位置: 首页 > news >正文

第三十五条:使用实例字段代替序号

所有枚举类型都有一个ordinal()方法,他返回枚举常量在这个类型中以数字表示的位置信息,也就是序号。

举例:

public enum Ensemble {SOLO,DUET,TRIO,QUARTET,QUINTET,SEXTET,SEPTET,OCTET,NONET,DECTET;public int numberOfMusicians() {return ordinal()+1;}public static void main(String[] args) {System.out.println(Ensemble.SOLO.numberOfMusicians());}
}

打印:

1Process finished with exit code 0

缺点:如果有人改了顺序,那么就残了,全部都变了,不容易维护。于是:

如果需要记录顺序最好使用字段记录(永远不要使用ordinal),避免位置发生改变时ordinal值变动影响业务

举例:

public enum Ensemble {SOLO(1),DUET(2),TRIO(3),QUARTET(4),QUINTET(5),SEXTET(6),SEPTET(7),OCTET(8),NONET(9),DECTET(10);//使用字段代替ordinalprivate final int numberOfMusicians;Ensemble(int size) {this.numberOfMusicians = size;}public int getNumberOfMusicians() {return numberOfMusicians;}public static void main(String[] args) {System.out.println(Ensemble.DUET.getNumberOfMusicians());}
}

打印:

2Process finished with exit code 0

Enum文档中对ordinal方法有说明,大多数程序员用不到这个方法,它是设计用于基于枚举的通用数据结构的,如enumset和enumMap,最好还是避免使用ordinal方法。

所有文章无条件开放,顺手点个赞不为过吧!

  

                                          


http://www.mrgr.cn/news/30508.html

相关文章:

  • 毕业论文写作会用到的AI软件!一定不能错过的18个网站!(务必收藏)
  • 单细胞代谢组学数据分析利器---SCMeTA
  • JavaDS —— 图
  • 数据结构-3.3.栈的链式存储实现
  • 探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】
  • sql语句练习
  • Mybatis 快速入门(maven)
  • C++标准的一些特性记录:C++11的thread_local
  • 傅里叶变换的基本性质和有关定理
  • 【电路笔记】-运算放大器比较器
  • 大牛直播SDK核心音视频模块探究
  • C++的初阶模板和STL
  • 前端常用的主流框架有哪些
  • 诗文发布模板(python代码打造键盘录入诗文自动排版,MarkDown源码文本)
  • javascript中栈内存与堆内存如何理解?以及如何区分?
  • @JsonFormat 和 @DateTimeFormat 的区别
  • 将有序数组——>二叉搜索树
  • 9. 什么是 Beam Search?深入理解模型生成策略
  • Kotlin cancel CoroutineScope.launch的任务后仍运行
  • 智谱清影 -CogVideoX-2b-部署与使用,带你揭秘生成6s视频的极致体验!