在开发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. Android加载大图不OOM

    首先,我们试着往sdcard里放一张400k的图片,但是分辨率是2560*1600 布局简单 <?xml version="1.0" encoding="utf-8 ...

  2. c++位运算符介绍

    下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>优先级相同. C/C++位操作运算符 操作符 功能 用法 ~ 位求反 ~expr << ...

  3. windows 常见环境变量(%AppData%、%TEMP%、%TMP%)

    set 命令查看全部环境变量: %AppData%(应用程序数据).%TEMP%(临时文件夹).%TMP%(临时文件夹) .%LocalAppData%(应用程序本地数据)三个环境变量: C:\Use ...

  4. git 回滚到任意版本

    git回滚到任意版本 1.先显示提交的log $ git log -3 commit 4dc08bb8996a6ee02f Author: Mark <xxx@xx.com> Date: ...

  5. 49.大量qq号及qq密码挖掘到结构体并实现精确分配内存以及快速排序

    原数据: 处理后的数据: 完整代码: //思路; //数据清洗(把空格替换成'\0') -> 精确获取每一行(要提前获取source的总长度) -> 获取出每一行再精确分割并把分割后的数据 ...

  6. 分享一下事件监听addEventListener----attachEvent的用法

    来自:http://www.cnblogs.com/wkylin/archive/2011/10/09/2203161.html 事件监听addEventListener----attachEvent ...

  7. ajax处理响应(三)

        一旦脚本调用了send方法,浏览器就会在后台发送请求到浏览器.因为请求是在后台处理的,所以Ajax依靠事件来通知你这个请求的进度的进展情况,在上个随笔的里,使用handleResponse函数 ...

  8. python爬虫之『入门基础』

    HTTP请求 1.首先需要了解一下http请求,当用户在地址栏中输入网址,发送网络请求的过程是什么? 可以参考我之前学习的时候转载的一篇文章一次完整的HTTP事务过程–超详细 2.还需要了解一下htt ...

  9. 【习题 8-9 1613】 K-Graph Oddity

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉最大度数|1就是最多需要的个数了. 就贪心一下. 然后模拟染色的过程就可以了. (贪心染色就可以了 (看看周围哪个颜色没有,就用 ...

  10. Android eclipse 提示java代码 快捷键

    1.提示java代码能够用ALT+/ 键就能够了(前提是你要把你须要的类或方法的首字母打出来).我添加的部分:仅仅要输入sysout,然后alt+/键就能够输出System.out.prinln(), ...