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判断。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*<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:枚举的前提是,这些字符串不会频繁的改变,如果要是频繁的改变,不建议使用枚举。

字符串如果强制转换成int之后没有溢出那么是可以传入改字符串,不会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值