Java中怎样由枚举常量的ordinal值获得枚举常量对象

Java中怎样由枚举常量的ordinal值获得枚举常量对象

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方

  1. enum Season {
  2.     SPRING, SUMMER, AUTUMN, WINTER
  3. }

就定义了一个季节枚举类型。

在本例中,对于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)方法,并返回该数组下标对象的对象就能够了。代码例如以下:

  1. enum Season {
  2.     SPRING, SUMMER, AUTUMN, WINTER;
  3.     public static Season valueOf(int ordinal) {
  4.         if (ordinal < 0 || ordinal >= values().length) {
  5.             throw new IndexOutOfBoundsException(“Invalid ordinal”);
  6.         }
  7.         return values()[ordinal];
  8.     }
  9. }

怎么样,还是挺简单的吧?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117993.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab中的imwrite_medfilt2函数

    matlab中的imwrite_medfilt2函数1.imwrite函数imwrite函数的作用是将图像写入图形文件。2.语法imwrite(A,filename)imwrite(A,map,filename)imwrite(___,fmt)imwrite(___,Name,Value)(1)imwrite(A,filename)将图像数据A写入filename指定的文件,并从扩展名推断出文件格式。imwrite在当前文件夹中创建新文件。输出图像的位深度取决于A的数据类型和文件格式。对于大多数格式来说: 如果……

    2022年10月4日
    0
  • MaxCompute Studio使用心得系列3——可视化分析作业运行

    MaxCompute Studio使用心得系列3——可视化分析作业运行

    2022年3月8日
    59
  • input file accept限制文件上传类型

    input file accept限制文件上传类型一、需求上传文件只允许上传doc、docx、jpg、png、gif和pdf格式的文件,需要在前后端进行双重限制二、前端实现1、前端限制通过inputfileaccept属性实现,在accept中以逗号分隔开【图一】,便可以实现选择文件时,默认只可选择设定格式的文件【图二】,需要说明的是,MIME格式image/jpeg对应.jpg,.jpeg等几种格式,不能达…

    2022年7月17日
    56
  • ORACLE RAC--裸设备的创建配置

    ORACLE RAC--裸设备的创建配置

    2022年3月11日
    86
  • es6 转es5_es5 es6是什么

    es6 转es5_es5 es6是什么项目js没有用vue的福音情景问题 项目有很多新的js语法es6es7等等 如你所愿市面上很多浏览器已经大部分支持这些与语法了 但是ie就差强人意了直接歇菜如何解决 利用node插件完成语法降级实施情景 #安装babel npminstall–save-dev@babel/core #安装转码规则 npminstall–save-dev@babel/preset-env #规则加入babel.config.json

    2022年9月25日
    0
  • TensorFlow源代码学习–1 Session API reference

    TensorFlow源代码学习–1 Session API reference学习TensorFlow源代码,先把API文档扒出来研究一下整体结构:一下是文档内容的整理,简单翻译一下

    2022年10月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号