1. 问题描述
今天在代码中想对Java switch case 和枚举类型Enum对象进行联合使用,但发现有Eclipse中异常提示信息:case expressions must be constant expressions,导致编译始终过不去。
枚举类型定义如下:
public enum TradeStatus { CLOSE(-1, "已关闭"), NO_TRADE(0, "未创建"), CREATE(1, "拍下"), PAY(2, "已付款"), SHIP(3, "已发货"), SUCCESS(4, "已完成"); private int value; private String name; private TradeStatus(int value, String name) { this.setValue(value); this.setName(name); } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static TradeStatus getByValue(int value) { for (TradeStatus tradeStatus : values()) { if (tradeStatus.getValue() == value) { return tradeStatus; } } return null; } }
使用代码入下:
private String getStatusDesc(Integer tradeStatus) { switch(tradeStatus){ case TradeStatus.CREATE.getValue() : break; default: break; } return "交易状态"; }
2. 原因分析
本意是想对tradeStatus值进行分类过滤,但由于 TradeStatus.CREATE.getValue() 返回值是一个变量不符合Java switch case的语法,导致报错。
接下来修改了代码,如下:
private String getStatusDesc(Integer tradeStatus) { switch (TradeStatus.getByValue(tradeStatus)) { case OrderInfoSearchDO.TradeStatus.CREATE: break; default: break; } return "交易状态"; }
但Eclipse继续提示错误信息:The qualified case label TradeStatus.CREATE must be replaced with the unqualified enum constant CREATE。。。
百思不得其解。
3. 问题解决
把枚举常量前的冗余类信息去掉即可,如下所示:
private String getStatusDesc(Integer tradeStatus) { switch (TradeStatus.getByValue(tradeStatus)) { case CREATE: break; default: break; } return "交易状态"; }
相关推荐
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
自己整理枚举enum和switch 的使用代码
java enum详细教程。由浅入深,包括基本语法方面..很适合新手学习。/n各位看官。绝对超值。
java中enum枚举的详细用法。 0.0
java高级编程 Enum枚举 包括枚举的例子,问题 及一些文档,是复习的好资源
Java中的枚举类型Enum示例源代码,详见http://blog.csdn.net/snarlfuture/article/details/18996037
C++中枚举类型(enum)
NULL 博文链接:https://janeky.iteye.com/blog/463611
全面掌握java枚举类型(enum-type)1
java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料); java 枚举(enum) 详解(学习资料);
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
java枚举类型的定义使用介绍,还有示例。
主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
主要给大家介绍了关于Java的枚举enum的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下
enum的全称为enumeration, 是 JDK 1.5中引入的新特性,存放在 java....下面这篇文章是我在使用enum过程中的一些经验和总结,分享出来方便大家快速的掌握Java中枚举(enum),有需要的朋友们下面跟着小编来一起看看吧。
static_enum::enum_cast可以像static_cast一样用于将枚举转换为字符串或从枚举创建字符串 static_enum::to_string从枚举变量获取名称,返回constexpr std::optional static_enum::from_string从字符串中获取枚举...
enum枚举的方法
java代码-java enum枚举遍历