在程序当中,我们经常定义一些常量来标识一些状态,类型等。

比如 定义订单的状态,可以定义为ORDER_STATUS_CANCEL = 1 表示订单状态为"订单已取消"。

但是感觉定义常量的方式不是很灵活,

比如ORDER_STATUS_CANCEL常量表示"订单已取消" ,那么:

  1. 存订单数据时,可以直接用ORDER_STATUS_CANCEL常量
  2. 取订单数据时,取出的是1这个常量值,没法判断是什么状态,需要人工判断1代表的是什么
  3. 结论:这样不便于以后扩展维护,比较死板

给予以上考虑,想到了枚举类,可以很容易的解决以上问题

  1. 可以通过ORDER_STATUS_CANCEL得到1
  2. 可以通过1得到ORDER_STATUS_CANCEL

代码如下:

public enum OrderStatus {         
//1订单提交 2已付款等待收货 3消费撤销4退货
ORDER_STATUS_SUBMIT(1,"待支付"),
ORDER_STATUS_PAID(2,"已付款"),
ORDER_STATUS_CANCEL(3,"消费撤销"),
ORDER_STATUS_REFUND(4,"已退货");
private int value;
private String text;
OrderStatus(int value, String text) {
this.value = value;
this.text = text;
}
public int getValue() { return this.value; }
public String getText() { return this.text; }
public static OrderStatus get(int value) {
OrderStatus[] elements = OrderStatus.values();
for (int i = 0; i < elements.length; i++) {
if (elements[i].getValue() == value) {
return elements[i];
}
}
return null; }
}

使用说明:如存入“待支付”状态的订单可以:

OrderStatus.ORDER_STATUS_SUBMIT.getValue()

此时,得到的是ORDER_STATUS_SUBMIT对应的value:1

当查询订单,需要显示订单状态(如状态为1,对应的value为“待支付”)时:

OrderStatus.get(userOrder.getUserOrderStatus()).getText()

enum 枚举的使用的更多相关文章

  1. c# (ENUM)枚举组合类型的谷歌序列化Protobuf

    c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...

  2. C#将Enum枚举映射到文本字符串

    介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...

  3. MVC3不能正确识别JSON中的Enum枚举值

    一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...

  4. 161208、Java enum 枚举还可以这么用

    在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外.然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...

  5. Python中模拟enum枚举类型的5种方法分享

    这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下   以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...

  6. java之enum枚举(2015年05月28日)

    背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定 ...

  7. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  8. Enum枚举类|注解Annotation

    Enum枚举类 ①枚举类和普通类的差别: 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类 枚举类的构造器仅仅能使用 private 訪问控制符 枚举类的全部实例必须在枚举类中 ...

  9. 中秋佳节--理解Enum枚举

    一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表 ...

  10. 获取Enum枚举值描述的几法方法

    原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用 ...

随机推荐

  1. PCL常见编程问题

    1.如何获取pcd文件点云里点的格式,比如是pcl::PointXYZ还是pcl::PointXYZRGB等类型? #include <pcl/io/pcd_io.h> #include ...

  2. JavaBean用JSP调用和使用JSP动作标签的区别

    javabean的类可以用jsp动作标签实例化并使用. <!-- 下面这句是对Javabean类person的引用,引用的实例是p2 --> <jsp:useBean id=&quo ...

  3. truncate有外键约束的表,报ORA-02266处理。

    问题描述:当父表有子表的外键约束时,无法直接truncate父表.报ORA-02266: unique/primary keys in table referenced by enabled fore ...

  4. HTTP Status 404 - /chp-adapter-web/ 问题解决

    启动tomcat中是报404,后来发现是同事把web.xml删除了,加上后,正常访问!

  5. 【转】CSS深入理解流体特性和BFC特性下多栏自适应布局

    这篇文章发布于 2015年02月12日,星期四,23:36,归类于 css相关. 阅读 30873 次, 今日 63 次 by zhangxinxu from http://www.zhangxinx ...

  6. Navicat(连接) -1之HTTP 设置

    HTTP 设置 HTTP 通道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80).这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接 ...

  7. Spark往Elasticsearch读写数据

    def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setAppName("DecisionTre ...

  8. matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读

    静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...

  9. SeedDms 文档管理系统安装

    在xampp下安装SeedDms 1.下载seeddms-quickstart-4.3.24.tar.gz,解压出来三个目录 \data\ \pear\ \seeddms-4.3.24\ 我把seed ...

  10. Linux批量更改文件后缀名

    一.rename解决 1.  Ubuntu系统下 rename 's/\.c/\.h/'  ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2.  CentOS5.5系统下 rename . ...