定义枚举实例时按照顺序定义的好处
来源:互联网 发布:c语言sleep和wait区别 编辑:程序博客网 时间:2024/06/14 20:28
java的枚举基本上大家都用过,枚举定义时候的顺序对程序的影响呢,呵呵,我也是最近才发现这个问题,这涉及到两个方法public final int compareTo(E o);和public final int ordinal();
ordinal();返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零).这个方法很有意思,基本上大多数时候用不到,但是很多时候我们有种需求就是在定义一些类型的时候我们喜欢用int类型来定义,但是转换为枚举的时候,我门一般会在枚举里面定义一个private int value;来表示类型的值(常用于对应数据库里面的类型字段),其实我们在定义枚举的时候直接按照int值的顺序在枚举里面定义,然后通过ordinal();就可以直接获取对应的值了(还有堆里面少一个int变量的内存分配,当然微不足道,^-^).当然还有其他方式的使用,比如我觉得比较经典的是fastjson里面com.alibaba.fastjson.parser.Feature这个类,使用得很巧妙,大家可以自己看看.
至于compareTo(E o);这个方法我直接贴出来源码好了,看看大家就知道了
public final int compareTo(E o) {
Enum other = (Enum)o;
Enum self = this;
if (self.getClass() != other.getClass() && // optimization
self.getDeclaringClass() != other.getDeclaringClass())
throw new ClassCastException();
return self.ordinal - other.ordinal;
}
0 0
- 定义枚举实例时按照顺序定义的好处
- 枚举类型的定义
- 枚举类型的定义
- 枚举变量的定义
- GCC中运用枚举定义数组的实例
- 定义类时枚举常量的运用
- 顺序容器的定义
- 顺序容器的定义
- 顺序容器的定义
- 定义的顺序
- 宏定义的顺序
- 枚举定义
- 枚举定义
- 定义枚举
- typedef char int8; 这样定义的好处?
- POI操作Excel:名字定义的好处
- do{}while(0)宏定义的好处
- do{}while(0)宏定义的好处
- 参数的作用域
- 一个关于NIO的分析
- maven打包可运行的JAR
- JSF的消息处理的一点补充说明
- eclipse的远程调试
- 定义枚举实例时按照顺序定义的好处
- 软件项目版本号的命名规则及格式(转)
- 谈实在
- 计算两个时间戳之间的天数的一种比较高效的算法
- 使用logback时候如何兼容其他日志框架
- 进程,线程,协程的相关解释
- 同步与堵塞完全是两码事
- 【学习3】Cocos2d-x 3.x中使用物理引擎动态添加元素(点击事件)
- 深入浅出Docker(一):Docker核心技术预览(infoq)