首页 > 其他分享 >枚举类的values()方法 枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值

枚举类的values()方法 枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值

时间:2023-11-30 14:24:43浏览次数:47  
标签:转换成 枚举 values 数组 方法 类中

枚举类的values()方法 枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值

枚举类中的元素是无法通过下标值来访问的,如果你想指定访问枚举类中的某个值,你只能直接写出它们的值,除此之外,别无他法。但是枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值。比如下面的代码:

  1. enum Direction {
  2. LEFT, RIGHT, UP, DOWN
  3. }


    这里面有四个值,如果我们想通过下标来访问的话,就必须进行如下的操作:

  1. Direction dirs[] = Direction.values();
  2. for (int i = 0; i < dirs.length; i++) {
  3. System.out.println(dirs[i]);
  4. }

 

这个操作有什么用呢?主要用途就是从这个枚举类中选取一个随机值,具体的代码如下:

  1. Random r = new Random();
  2. int ri = r.netInt(dirs.length);
  3. Direction dir = dirs[ri];

 

上面这段代码的用处很广,比如在游戏中,指定一个随机方向;在抽奖中,选择一个随机的奖品等等“需要随机对象的地方”。那么为什么要单独说这个方法呢?因为在API文档中,Enum类的这个方法你是查不到,无论是它的父类中,还是他实现的接口中。
    关于Enum类中values方法的由来,有人做了比较深入的论证,具体见下面文章:
Java中Enum类下的values()方法的由来
http://blog.sina.com.cn/s/blog_6fd0fd4b01014x8l.html
 

原文链接:https://blog.csdn.net/weixin_39408343/article/details/103188620

标签:转换成,枚举,values,数组,方法,类中
From: https://www.cnblogs.com/sunny3158/p/17867221.html

相关文章

  • 实型(浮点型) 字符型 枚举型 - C语言-2023/11/29
    实型(浮点型)字符型枚举型......
  • java 为解决导入部门名称是中文,部门名称转换成部门ID
    一、业务实现:(Server层)/***为解决导入部门名称是中文,部门名称转换成部门ID*key:部门名称*value:部门ID**/Map<String,Integer>getOrgNameToIdMapping();二、业务层(SercerImpl)/***为解决导入部门名称是中文,部门名称转换成部......
  • 调和级数枚举倍数模型
    调和级数枚举倍数模型参考博客:算法学习笔记27:素数筛法【埃氏筛法、线性筛法】OI&ACM]调和级数枚举倍数模型板子(时间复杂度\(O(nlogn)\)):for(inti=1;i<=n;i++){for(intj=i;j<=n;j+=i){??? }}应用:目前较常见的用处:\(f[i]:最大公因数为i的倍......
  • 求解--如何把图片的base64编码转换成图片(未解决)
    问题描述将图片弄好之后,并且显示我弄成功了,但是就是找不到图片保存到哪里了;然后发现可以将base64编码转换成图片,但是不会转~~~求解救呀~~~问题解决未解决!!!......
  • 枚举类
    枚举类概述在某些情况下,一个类的对象是有限而且固定的,例如季节类。只能有四个对象手动实现枚举类:prvate修饰构造器属性使用privatefinal修饰把该类的所有实例都使用publicstaticfinal来修饰使用enum定义枚举类jdk1.5新增的enum关键字用于定义枚举类枚举类和普通类的区别:使用enu......
  • (二十五)C#编程基础复习——enum枚举类型
    枚举类型(也可以成为“枚举器”)由一组具有独立标志服(名称)的整数类型常量构成,在C#枚举类型不仅可以在类或结构体的内部声明,也可以在类或结构体的外部声明,默认情况下枚举类型中成员的默认值是从0开始的,然后逐一递增。在使用枚举时要注意以下几点:枚举类型中不能定义方法;枚举类型具......
  • 6.1 Windows驱动开发:内核枚举SSDT表基址
    SSDT表(SystemServiceDescriptorTable)是Windows操作系统内核中的关键组成部分,负责存储系统服务调用的相关信息。具体而言,SSDT表包含了系统调用的函数地址以及其他与系统服务相关的信息。每个系统调用对应SSDT表中的一个表项,其中存储了相应系统服务的函数地址。SSDT表在64位和32......
  • 6.2 Windows驱动开发:内核枚举SSSDT表基址
    在Windows内核中,SSSDT(SystemServiceShadowDescriptorTable)是SSDT(SystemServiceDescriptorTable)的一种变种,其主要用途是提供Windows系统对系统服务调用的阴影拷贝。SSSDT表存储了系统调用的函数地址,类似于SSDT表,但在某些情况下,Windows系统会使用SSSDT表来对系统服务进行引导......
  • javaString字符串转换成加减乘除
    字符串不用分割直接进行加减乘除的操作每天一个无用小技巧!try{ScriptEnginejavascript=newScriptEngineManager().getEngineByName("JavaScript");Stringstring="1*3-6+8/2";//这里是强制转换成数据类型Doubledouble=(Double)javascript.eval(string);......
  • 枚举类型显式赋值的另一个例子
    enumDay{SUNDAY=-1,MONDAY=3,TUESDAY,WEDNESDAY=2,THURSDAY,FRIDAY,SATURDAY};这些类型的值分别是-1,3,4,2,3,4,5所以从一个显性赋值的变量开始一直到下一个显性赋值的变量结束,中间的变量依次递......