在开发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. 在OEL 5.4 32bit上使用yum install命令遇到的问题

    在OEL 5.4 32bit上使用yum install命令遇到的问题 [root@localhost yum.repos.d]# yum install elfutils-libelf-devel- ...

  2. uva103 - Stacking Boxes(DAG)

    题目:uva103 - Stacking Boxes(DAG) 题目大意:给出N个boxes, 而且给出这些箱子的维度.要求找一个最长的序列.可以使得以下的箱子一定可以有个维度序列大于上面的那个箱子的 ...

  3. [BZOJ3566][SHOI2014]概率充电器 换根树形DP

    链接 题意:n个充电元件形成一棵树,每个点和每条边都有各自的充电概率,元件可以自身充电或者通过其他点和边间接充电,求充电状态元件的期望个数 题解 设1为根节点 设 \(f[x]\) 表示 \(x\) ...

  4. vue ---- 组件传值之间使用 v-model

    父子组件通信,都是单项的,很多时候需要双向通信.方法如下: 1.父组件使用:msg.sync="aa"  子组件使用$emit('update:msg', 'msg改变后的值xxx ...

  5. 【基础篇】DatePickerDialog日期控件的基本使用(一)

    项目步骤: 1.首先在Main.xml布局文件中添加一个Button标签,用来点击显示日期控件,Main.xml内容如下: <RelativeLayout xmlns:android=" ...

  6. pycharm不显示工具栏,自动导入模块,格式化代码快捷键

    我们需修改View里面的Toolbar,在前面打上沟,然后就可以显示了 自动导入模块设置:import numpy as np 我们需用鼠标选中numpy,然后在键盘上同时按住Alt+Enter键,通 ...

  7. IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)

    IntelliJ IDEA使用教程 (总目录篇) 有时候需要看Java源码,但是 Java 1.7 和 Java 1.8的差别的关系,有时候你想查看不同jdk版本的Java源码. 或者你的项目需要测试 ...

  8. (43)JS运动之链式运动框架

    链式运动框架就是一系列的运动分阶段进行,在普通的运动框架上加上一个參数function,这个function表示下一个要运行的动作.详细代码例如以下: <!DOCTYPE HTML> &l ...

  9. js37---Function.prototype

    //给函数的prototype新增名字为name,函数体为fn的函数 Function.prototype.method =function(name,fn){ this.prototype[name ...

  10. jodd-cache集锦

    Jodd cache提供了一组cache的实现,其层次如下: 其中, AbstractCacheMap是一个具有计时和大小的缓存map的默认实现,它的实现类必须: 创建一个新的缓存map. 实现自己的 ...