在开发java程序的过程中,我们遇到了条件推断首选就是switch,可是java中的switch功能不支持字符串作为条件。这时我们该怎么办呢? ——使用枚举。

一、枚举简单了解

 

 1、enum是一种数据类型。

特殊:是指在枚举中将变量的值一一列出来,变量的值仅仅限于列举出来的值的范围内。

 特殊到一般化:enmu 就是我们依据自己业务须要定义的同“String,int”同样的数据类型。同一时候enum也就是一种类,能够在enum中定义方法,在使用的时候就依照调用类的方式来调用。

 

 2、定义成枚举的前提

用于声明一组命名的常数,当一个变量有几种可能的取值时,且这几个取值是固定的,一般不会发生变化就能够将它定义为枚举类型。比如:一周的七天:

 public enum Day

 {

  SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,

 }

 

 3、枚举的基类

System.Enum 类型是全部枚举类型的抽象基类,而且从 System.Enum 继承的成员在不论什么枚举类型中都可用。

在这个基类中,继承了系统的 三个接口IComparable, IFormattable, IConvertible。有非常多经常使用的方法。比如:compaareTo,Equals,format 等,所以在使用枚举类的时候,不要单纯的仅仅是依据业务须要定义,要学会使用继承系统中已经存在的“基类”,就能够拥有巨人给写好的方法,省去自己写的麻烦,更重要的是“巨人”写的灵活性好。

二、实例

 

 以下是一个DRP中的小“视角”。依据不同的字符串,对不同的表进行操作,使用了工厂模式,在FactoryContext中使用枚举来完毕了Switch推断。

/*<span style="font-family:KaiTi_GB2312;font-size:18px;">
* 定义数据字典枚举类
* */
public enum DataDictEnum {
A,B,C,D;
} /*
* 使用Switch 进行推断,參数为枚举类型
* 依据枚举中的A,B,C,D 进行实例化不同的工厂对象
* */ public IDataDict CreateFactory(DataDictEnum type){
IDataDict dictFactory=null; switch (type){
//实例化分销商工厂类
case A:
dictFactory= ClientLevelFactory.getInstance();
break;
Case B:
dictFactory= RegionLevelFactory.getInstance();
break; }
return dictFactory;
}</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">
//调用
//创建枚举类型中“A”
DataDictEnum type =DataDictEnum.A;
//实例化分销商,调用Switch推断方法
DataDictManager clm =DataDicContext.getInstance().CreateFactory(type).CreateType();</span>

就这么简单,使用枚举,攻克了java中Switch 不能推断String的不完美。

PS:枚举的前提是,这些字符串不会频繁的改变,假设要是频繁的改变,不建议使用枚举。



最新文章

  1. Tesseract-OCR字符识别简介
  2. PDO
  3. 【转】vim格式化C代码
  4. C#ASP.NET 通用扩展函数之 IsWhat 简单好用
  5. hdu 1005 简单题
  6. SharePoint 2013 重复的管理账户错误:已添加项。字典中的关键字 所添加的关键字
  7. (转)ThinkPHP find方法 查询一条数据记录
  8. 用实例给新手讲解RSA加密算法
  9. SQL Server 通配符为目标字符的查找
  10. visual studio 2013 使用IIS Express附加调试MVC5
  11. haproxy 访问www.zjdev.com 自动跳转到appserver_8001 对应的nginx
  12. git合并远端分支到本地分支的两种方式
  13. 面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
  14. 使用 IDEA 创建 Maven Web 项目 (一)- 使用IEAD创建Maven项目
  15. C++中的类继承(1) 三种继承方式
  16. 【ASP.NET Core】根据 Content-Type 头部来筛选 Action
  17. Jenkins+PowerShell持续集成环境搭建(三)Web项目
  18. Git命令行大全
  19. Python 回调函数
  20. 【Spark调优】数据本地化与参数调优

热门文章

  1. NumPy基础入门学习
  2. SQL Server 为代码减负之存储过程
  3. 缓存函数memorize
  4. IDC机房KVM应用案例分析
  5. BZOJ4712: 洪水(树链剖分维护Dp)
  6. ORA-01031: 权限不足
  7. 通过wireshark,以及python代码收发邮件,了解smtp协议,pop协议工作过程
  8. 2.技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化
  9. 19,tuple多元数组
  10. 28.semaphore跨进程通信