在开发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:枚举的前提是,这些字符串不会频繁的改变,假设要是频繁的改变,不建议使用枚举。



java中的switch用String作为条件的更多相关文章

  1. Java jre7及以上版本中的switch支持String的实现细节

    Java7中的switch支持String的实现细节 作者: zsxwing 更新: 2013-03-04 21:08:02 发布: 2012-04-26 13:58:19 在Java7之前,swit ...

  2. Java中的Switch用法

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),   在java1. ...

  3. tips:Java中的switch的选择因子

    tips:Java中的switch的选择因子! /*  switch(){   }  */ switch的()中的判断条件能是什么类型呢? 事实上,在我们学习c++的了解中,switch的参数是一个能 ...

  4. java中的Switch case语句

    java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量),变量只能是整型或者字符型,程序先读出这个变量的 ...

  5. Java中的switch语句后面的控制表达式的数据类型

    Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型

  6. java中main方法的 (String []args)

    java中main方法的 (String []args)         String[] args是main函数的形式参数,可以用来获取命令行用户输入进去的参数.java 本身不存在不带String ...

  7. java中int转成String位数不足前面补零

    java中int转成String位数不足前面补零 转载自:http://ych0108.iteye.com/blog/2174134 java中int转String位数不够前面补零 String.fo ...

  8. Java中toString()与new String()

    Java中toString()与new String(): 1.错误演示: FileInputStream fileIn = new FileInputStream(filePath);byte[] ...

  9. java中的switch

    switch 语句由一个控制表达式和多个case标签组成. switch 控制表达式支持的类型有byte.short.char.int.enum(Java 5).String(Java 7). swi ...

随机推荐

  1. PipeCAD之管道标准库PipeStd

    PipeCAD之管道标准库PipeStd eryar@163.com Key Words. PipeCAD, PipeStd, 管道设计软件,管件库 1. Introduction 前不久,两位老友徐 ...

  2. Day5网络流

    算法 无源汇上下界可行流 先强制流过l的流量 从s到每个正权点连流量为l的流量 从每个负权点向t连-l的流量 如果容量为0,则不连边 有源汇上下界最大流 去掉下界 先求出可行流 再求S到T的最大流 有 ...

  3. Javascript和jquery事件--事件冒泡和事件捕获

    jQuery 是一个 JavaScript 库,jQuery 极大地简化了 JavaScript 编程,在有关jq的描述中,jq是兼容现有的主流浏览器,比如谷歌.火狐,safari等(当然是指较新的版 ...

  4. golang语言入门及安装

    golang语言入门及安装 go语言是google在2009年发布的开源编程语言使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 本次讲解在windows上安装go语言的开 ...

  5. AJAX与XMLHttpRequest

    XMLHttpRequest: 中文可以解释为可扩展超文本传输请求.Xml可扩展标记语言,Http超文本传输协议,Request请求.XMLHttpRequest对象可以在不向服务器提交整个页面的情况 ...

  6. 构建自己的AngularJS - 作用域和Digest(一)

    作用域 第一章 作用域和Digest(一) Angular作用域是简单javascript对象,因此你能够像对其它对象一样加入属性.然而,他们也有一些额外的功能:用于观測数据结构的变化.这样的观察能力 ...

  7. OpenStack_Swift源代码分析——ObjectReplicator源代码分析(1)

    1.ObjectorReplicator的启动 首先执行启动脚本 swift-init object-replicator start 此执行脚本的执行过程和ring执行脚本执行过程差点儿相同.找到s ...

  8. tokumx的安装和使用

    Add the Tokutek package signing key. $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key ...

  9. 使用gnu automake编译helloworld

    使用gnu automake编译helloworld 按照许多介绍automake基本步骤的教程中的说法,我在尝试使用automake编译helloworld示例程序的时候,仍然遇到了几个小坑,所幸后 ...

  10. Maven学习笔记4

    POM解析pom描述自身坐标,以及它关联的依赖,插件,仓库等. 项目模块设计项目聚合和继承. pom标签解析1. pom标签解析2. pom标签解析3. pom标签解析4. 聚合和继承 聚合模块只保留 ...