Java中枚举类型Enum的一种使用方式
枚举类定义如下:
public enum Status {
    SCUUESS("1", "成功"), FAILED("2", "失败");
    private String value;
    private String desc;
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    private Status(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}
使用方法:
public class StutusTest {
    public static void main(String[] args) {
        System.out.println(Status.SCUUESS.getValue());
        System.out.println(Status.SCUUESS.getDesc());
        System.out.println(Status.FAILED.getValue());
        System.out.println(Status.FAILED.getDesc());
    }
}

再比如,我们在操作数据库的时候,通常使用数字保存到数据库中,但是在界面上显示的时候,需要展示其中文意思,南无我们就可以通过下边的方式:
public enum FlightType {
    OW(1, "单程"), RT(2, "往返");
    public Integer code;
    public String desc;
    FlightType(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public static FlightType getTypeByCode(Integer code) {
        FlightType defaultType = FlightType.OW;
        for (FlightType ftype : FlightType.values()) {
            if (ftype.code == code) {
                return ftype;
            }
        }
        return defaultType;
    }
    public static String getDescByCode(Integer code) {
        return getTypeByCode(code).desc;
    }
}
这样的话,我们就可以通过getDescByCode方法获得其对应的中文。
另外,参数的个数是可以进行变化的,例如下边:
public enum DatabaseType {
    unknown(null, null, null,null),
    mysql("com.mysql.jdbc.Driver", "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource", "select 1",Dialect.MYSQL),
    h2("org.h2.Driver", "org.h2.jdbcx.JdbcDataSource", "select 1",Dialect.H2),
    oracle("oracle.jdbc.driver.OracleDriver", "oracle.jdbc.xa.client.OracleXADataSource", "select 1 from dual",Dialect.ORACLE);
    DatabaseType(String driverClassName, String xaDataSourceClassName, String testQuery,Dialect dialect) {
        this.driverClassName = driverClassName;
        this.testQuery = testQuery;
        this.xaDataSourceClassName = xaDataSourceClassName;
        this.dialect=dialect;
    }
    private final String testQuery;
    private final String driverClassName;
    private final String xaDataSourceClassName;
    private final Dialect dialect;
    public String getDriverClassName() {
        return driverClassName;
    }
    public String getXaDataSourceClassName() {
        return xaDataSourceClassName;
    }
    public String getTestQuery() {
        return testQuery;
    }
    public Dialect getDialect() {
        return dialect;
    }
    public static DatabaseType fromJdbcUrl(String url) {
        if (StringUtils.hasLength(url)) {
            Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
            String urlWithoutPrefix = url.substring("jdbc".length()).toLowerCase();
            for (DatabaseType driver : values()) {
                String prefix = ":" + driver.name().toLowerCase() + ":";
                if (driver != unknown && urlWithoutPrefix.startsWith(prefix)) {
                    return driver;
                }
            }
        }
        return unknown;
    }
}
public enum OrderFromSourceEnum implements EnumValue {
    // 现在(重构后)订单的来源只有 3 开单这一种
    PAY_RESERVE(1, "支付预约"),
    DIRECT_RESERVE(2, "直接预约"),
    BILL(3, "开单");
    private int value;
    private String name;
    OrderFromSourceEnum(Integer value, String name) {
        this.value = value;
        this.name = name;
    }
    /**
     * 按照Value获得枚举值
     */
    public static OrderFromSourceEnum valueOf(Integer value) {
        if (value != null) {
            for (OrderFromSourceEnum fsEnum : OrderFromSourceEnum.values()) {
                if (fsEnum.getValue() == value) {
                    return fsEnum;
                }
            }
        }
        return null;
    }
    @Override
    public int getValue() {
        return value;
    }
    @Override
    public String getName() {
        return name;
    }
Java中枚举类型Enum的一种使用方式的更多相关文章
- 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)
		新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ... 
- [转载] Java中枚举类型的使用 - enum
		目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ... 
- Java中枚举类型与for、switch语句
		1.枚举类型的声明 格式为: enum 枚举类型名{ 常量1,常量2,常量3 } 如: enum Number{ one,two,three,four,five //常量} 注意:enum内装的 ... 
- java中枚举类型的使用
		Java 枚举(enum) 详解7种常见的用法 JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. web项目里实体类使用枚举类型: 一般在该实体 ... 
- (转+原创)java的枚举类型Enum解释
		原文:http://www.cnblogs.com/mxmbk/articles/5091999.html 下文中还添加了个人的一些补充和理解. 在Java SE5之前,我们要使用枚举类型时,通常会使 ... 
- .net MVC 中枚举类型Enum 转化成 下拉列表的数据源
		第一次写技术博文,记录下工作中遇到的问题,给自己的知识做个备份,也希望能帮助到其他的同学 最近接手了公司的一个新的项目.有个页面涉及相关设计. 分享一个经常用到的吧. 方法一: 直入主题吧 我们的目的 ... 
- Java中枚举类型简单学习
		/* * enum类型不允许继承 * 除了这一点,我们基本上可以将enum看作一个常规的类 * 我们可以添加自己的方法与属性,我们也可以覆盖其中的方法. * 不过一定要在enum实例序列的最后添加分号 ... 
- java中枚举(enum)小例子。之前学过枚举但是一直没用,这里有个枚举类帮你我理解下(很肤浅)
		直接上枚举类,代码简单易懂. package com.jy.modules.cims.data.interact.tbj.loan.request; /** * * @author shengzhou ... 
- java中进程与线程的三种实现方式
		一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ... 
随机推荐
- Ubuntu install JDK
			1.#下载JDK,记住保存的目录 2. sudo mkdir /usr/java 3. sudo tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/java 4. ... 
- sublime 设置像IDE一样的 ctrl+鼠标左键 跳转到定义方法
			鼠标点击菜单栏的Preferences,选择Browse Packages ,进入文件加之后,选择User 点击进入User,在User里面添加文件名为 Default (Windows).subli ... 
- js搜索相同类型的控件全选、取值(Checkbox)
			function selectAll(obj) { if (obj.checked) { $("input[type='checkbox']").each(function () ... 
- 爬取动态网页:Selenium
			参考:http://blog.csdn.net/wgyscsf/article/details/53454910 概述 在爬虫过程中,一般情况下都是直接解析html源码进行分析解析即可.但是,有一种情 ... 
- java集合框架之HashMap和Hashtable的区别
			参考http://how2j.cn/k/collection/collection-hashmap-vs-hashtable/692.html#nowhere HashMap和Hashtable的区别 ... 
- eclipse + tomcat 开发环境配置
			一. 下载tomcat和Eclipse 下载tomcat 下载地址:http://tomcat.apache.org/download-70.cgi 下载后解压如下图 下载eclipse 下载地址:h ... 
- HTML5标签不兼容ie怎么办?
			HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 比较常用的HTML5的新标签元素有: <hea ... 
- C\C++书籍
			原文链接: bert hubert 翻译: 伯乐在线- 周昌鸿译文链接: http://blog.jobbole.com/61308/ 人们常常问我有什么C++和编程的书籍推荐,也许是因为我在Po ... 
- Spring Cloud:使用Ribbon实现负载均衡详解(上)
			1. 什么是 Ribbon? Spring Cloud Ribbon 是一套实现客户端负载均衡的工具.注意是客户端,当然也有服务端的负载均衡工具,我们后面再介绍.可以认为 Ribbon 就是一个负载均 ... 
- B. Mancala  (Codeforces Round #478 (Div. 2))
			#include <bits/stdc++.h> using namespace std; ; typedef long long ll; ll a[maxn]; ll b[maxn]; ... 
