• java中的switch用String作为条件


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




    
  • 相关阅读:
    c#对文件的读写
    win form treeview添加节点
    泛型的学习
    委托学习
    C#连接Oracle数据库解决报错(需要安装Oracle客户端软件8.1.7)的问题
    C#和Python 图片和base64的互转
    反射学习:(System.Reflection)
    objectivec:继承
    prism关键概念:
    三层架构的学习感悟(一)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4211688.html
Copyright © 2020-2023  润新知