如果可能,修改getIndex()方法,使其返回枚举而不是整数.如果无法做到这一点,则需要将索引映射到枚举元素:

鉴于以下枚举:

public enum Index {

ONE,

TWO,

THREE

}

您可以使用将索引映射到枚举元素

Index.values()[index]

给定你的方法Integer getIndex(),你可以做类似的事情

switch(Index.values()[getIndex()])

case ONE : ...

break;

case TWO : ...

break;

case THREE : ...

break;

}

请注意,如果您尝试访问枚举中大于枚举元素数的索引(例如,在上面的示例中,如果getIndex()返回值> 2),则可能抛出ArrayIndexOutOfBoundsException.

我将表达式Index.values()[getIndex()]封装到类似于valueOf(int index)的枚举方法中,类似于默认的valueOf(String s).然后,您还可以在那里处理有效的数组索引检查(例如,如果索引超出范围,则返回特殊的枚举值).同样,您也可以转换具有特殊含义的离散值:

public enum Index {

ZERO,

ONE,

TWO,

THREE,

REG,

INVALID;

public static Index valueOf(int index) {

if (index == 8) {

return REG;

}

if (index >= values().length) {

return INVALID;

}

return values()[index];

}

}

这仅是一个示例 – 在任何情况下,它通常取决于您从getIndex()方法获得的值的范围,以及您希望如何将它们映射到枚举元素.

然后你可以像使用它一样

switch(Index.valueOf(service.getIndex())) {

case ZERO : ... break;

...

case REG : ... break;

...

}

有关其他信息,请参阅Cast Int to enum in Java(特别是提示values()是一项昂贵的操作,因为每次调用时都需要返回数组的副本).

java 常量 表达式,java – Enum中的常量表达式相关推荐

  1. 在Java语言的if语句是什么表达式,if语句中的条件表达式中只能使用

    if语句中的条件表达式中只能使用关系或逻辑表达式吗?别的人十句话都不会伤到小编,但你的一句话就可以把小编伤得撕心裂肺. 不是,可以用任意表达式. if语句是指编程语言(包括c语言,C#,,java,V ...

  2. java args例子_Spring AOP中使用args表达式的方法示例

    本文实例讲述了Spring AOP中使用args表达式的方法.分享给大家供大家参考,具体如下: 一 配置 xmlns:xsi="http://www.w3.org/2001/XMLSchem ...

  3. python的常量和变量_python中的常量和变量代码详解

    局部和全局变量: # name='lhf' # def change_name(): # # global name # name='帅了一比' # print('change_name',name) ...

  4. java中null是常量吗_C_NULL Julia中的常量

    java中null是常量吗 Julia| C_NULL常数 (Julia | C_NULL Constant) C_NULL is a constant of Ptr{Nothing} type in ...

  5. el表达式遍历list中的list_EL表达式获取map和list集合中的值 | 学步园

    Map的每个对象以key=value的形式给出 当forEach tag的item属性中的表达式的值是java.util.Map时,在var中命名的变量被设置为类型是java.util.Map.Ent ...

  6. JAVA 定义全局常量码表_【Java基础】java常量是什么?

    ava常量是什么? JAVA常量就是在程序中固定不变的值,是不能改变的数据.例如数字1.字符"a".浮点数3.2等.在Java中,常量包括整型常量.浮点数常量.布尔常量.字符常量等 ...

  7. 以下选项中不正确的c语言字符型常量是,以上选项中,( )是不正确的C语言字符型常量 答案:”a”...

    相关问题 下列选项中不是常量的是( ).: 选项 中 常量 以下,选项,中,C语言,常量, 语句,中,常量,表达式,值, 小区,处方,农作,调控,目标,人,常量,处方,农业机械, 中,小数,常量,默认 ...

  8. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式

    前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...

  9. 《转》IN 查询时出现ORA-01795:列表中的最大表达式数为1000

    问题描述: SQL进行IN查询时出现:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000 解决办法: 问题原因是:SQL进行IN查询时,IN中的数据量 ...

最新文章

  1. 为什么处理有序数组比无序数组快?
  2. python knn-基于python实现KNN分类算法
  3. GlusterFS配置管理(五)
  4. IDEA中cannot resolve method getBean in applicationContext的解决方法
  5. 1032. 挖掘机技术哪家强(20)
  6. word删除分节符后之前的格式乱了_办公室高级技能之Word邮件合并拆分
  7. python创建虚拟环境命令_python 创建虚拟环境
  8. 三十六進制之間隨便轉換
  9. PostgreSQL 字符串分隔函数(regexp_split_to_table、regexp_split_to_array)  发表于 2020-06-01 |  阅读次数: 394
  10. 居民安装光伏系统常会碰壁 怎么样做才能少走弯路?
  11. TMS320C55x汇编语言编程
  12. 效率:标记语言:markdown
  13. 支付宝直付通怎么签约教程详解,支付宝直付通开通需要什么条件!
  14. 【一起学数据结构与算法分析】第二篇:字谜游戏
  15. 电池电压值转换为百分比
  16. 如何将Excel多行单元格文字合并到一个单元格中
  17. Vinted运营干货分享:Vinted国内使用详细步骤参考
  18. JavaScript实现堆叠图echarts
  19. android studio最新版下载,Android Studio mac版-Android Studio for mac下载 V4.2.1-PC6苹果网
  20. 江苏专转本计算机考试有操作题嘛,江苏专转本计算机模拟试题 6

热门文章

  1. h5+js页面输入手机号领取红包
  2. 下载《建筑的永恒之道》
  3. C/C++刷题训练营-第七讲
  4. Ubuntu16,JAVA JNA调用fortran,Fortran编译器:Intel Fortran, Fortran77版本
  5. win10共享打印机xp系统无法连接,拒绝访问解决办法
  6. c语言tchar转char,CString、TCHAR*、char*转换
  7. 必读的网管职业指南卓越网上可正式购买啦
  8. MYSQL 2059问题
  9. 国海证券分析报告(0607)
  10. MongoDB聚合aggregate操作集锦