Java中如何由枚举常量的ordinal值获得枚举常量对象
来源:互联网 发布:mac如何打开airplay 编辑:程序博客网 时间:2024/06/05 00:56
Java1.5提供了关键字enum,可以通过该关键字方便得定义自己需要的枚举类型,比如
就定义了一个季节枚举类型。
在本例中,对于Season.SPRING这个对象,Season.SPRING.name()可以得到该对象的字符串,即“SPRING”;反之,由Season.valueOf(“SPRING”)则可以得到该对象,即Season.SPRING。也就是说,使用name()方法和valueOf(String)方法可以在枚举类型对象和字符串之间方便得转换。当然,如果valueOf(String)方法的参数不是该枚举类型合法的字符串,则会抛出IllegalArgumentException异常。
对于枚举类型,Java内部实际上还是转换为java.lang.Enum的子类,可以通过“javap -c Season”命令反编译来观察这一点。Enum类提供了一个ordinal()方法,用来返回枚举对象的序数,比如本例中SPRING, SUMMER, AUTUMN, WINTER的序数就分别为0, 1, 2, 3。
在有些情况下,我们需要使用这个序数,而且还有可能再根据这个序数生成所需要的枚举对象,可是Enum并没有提供valueOf(int)这样的方法,那是不是就做不到呢?对于这个问题,实际上可以利用枚举类型的values()方法间接的做到。values()方法返回一个枚举对象数组,比如本例就是Season[],数组元素按照序数排列。在自定义的枚举类型中,我们只要定义自己的valueOf(int)方法,并返回该数组下标对象的对象就可以了。代码如下:
怎么样,还是挺简单的吧?
转自:http://blog.csdn.net/brooksychen/article/details/3342446
就定义了一个季节枚举类型。
enum Season { SPRING, SUMMER, AUTUMN, WINTER}
在本例中,对于Season.SPRING这个对象,Season.SPRING.name()可以得到该对象的字符串,即“SPRING”;反之,由Season.valueOf(“SPRING”)则可以得到该对象,即Season.SPRING。也就是说,使用name()方法和valueOf(String)方法可以在枚举类型对象和字符串之间方便得转换。当然,如果valueOf(String)方法的参数不是该枚举类型合法的字符串,则会抛出IllegalArgumentException异常。
对于枚举类型,Java内部实际上还是转换为java.lang.Enum的子类,可以通过“javap -c Season”命令反编译来观察这一点。Enum类提供了一个ordinal()方法,用来返回枚举对象的序数,比如本例中SPRING, SUMMER, AUTUMN, WINTER的序数就分别为0, 1, 2, 3。
System.out.println(Season.SPRING.ordinal());返回结果为0;
在有些情况下,我们需要使用这个序数,而且还有可能再根据这个序数生成所需要的枚举对象,可是Enum并没有提供valueOf(int)这样的方法,那是不是就做不到呢?对于这个问题,实际上可以利用枚举类型的values()方法间接的做到。values()方法返回一个枚举对象数组,比如本例就是Season[],数组元素按照序数排列。在自定义的枚举类型中,我们只要定义自己的valueOf(int)方法,并返回该数组下标对象的对象就可以了。代码如下:
enum Season { SPRING, SUMMER, AUTUMN, WINTER; public static Season valueOf(int ordinal) { if (ordinal < 0 || ordinal >= values().length) { throw new IndexOutOfBoundsException("Invalid ordinal"); } return values()[ordinal]; } }
怎么样,还是挺简单的吧?
转自:http://blog.csdn.net/brooksychen/article/details/3342446
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- Java中怎样由枚举常量的ordinal值获得枚举常量对象
- Java_Java中如何由枚举常量的ordin…
- Java枚举常量的使用
- java枚举常量的使用
- java枚举表示常量
- java 枚举常量
- 枚举常量
- 枚举常量
- 枚举常量
- 枚举常量
- c++中枚举常量与宏常量的一点区别
- java枚举与常量类的区别
- gdb脚本 - 查看stl变量
- 关于C# Winform的画图
- java map 遍历的三种简单的办法
- iOS流量监控
- C++ Boost库
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- vc中Error spawning cl.exe错误的解决方法
- css div布局的简单页面
- 简单的 SQL分组合并字段
- 第21章、OnItemSelectedListener事件(从零开始学Android)
- [Android]单机斗地主,破解版,无广告
- 关于Web方面的画图
- Win7安装网络打印机,32位64位通用
- Vuforia SDK 2.0