枚举类型的一种使用方式

今天改同事的代码发现同事的代码中有大量的if else语句。很不美观而且可读性太差。

因为需要给前端一个key,value的列表。这个列表写死。然而同事的代码。

放几张图,大家自己感受。我都不知道以后这个api咋维护,新增一个工站,减少一个工站。

果然新的任务新增4个工站,好吧,开始给代码装扮一下。

首先,写一个枚举类。

package com.smartflow.common.enumpackage;

/**
 * @author :tao
 * @date :Created in 2020/8/1 22:51
 * @description:${description}
 */
public enum StationEnum {
    /**
     *
     */
    STATION_PRODUCTION(1,"生产工站"),
    STATION_TEST(2,"测试工站"),
    STATION_FIX(3,"维修工站"),
    STATION_VIRTUAL(4,"虚拟工站"),
    STATION_MATERIAL(5,"上料工站"),
    STATION_CRASH(6,"清洗工站"),
    STATION_PAK(7,"配送工站");

    private final int key;
    private final String value;

    StationEnum(int key, String value) {
        this.key = key;
        this.value = value;
    }

    public int getKey() {
        return key;
    }

    public String getValue() {
        return value;
    }
}

 

 

然后这个是获取工站的列表,看吧你几乎看不到重复的new map,或者是魔法值。对比一下上边的是不是很美观。

/**
 *获取工站类型列表
 * @return 工站类型列表
 */
private List<Map<String,Object>>getStationTypeList()
{

   List<Map<String, Object>> stationTypeList = new ArrayList<>();

   for (StationEnum stationEnum:StationEnum.values())
   {
      Map<String, Object> stationType = new HashMap<>(2);
      stationType.put("key", stationEnum.getKey());
      stationType.put("label", stationEnum.getValue());
      stationTypeList.add(stationType);
   }

   return  stationTypeList;
}

接着根据工站id也就是key查找工站名

/**
 * 根据key值查找工站名
 * @param key  key值
 * @return 返回攻占名
 */
private String getStationLabel(int key)
{
   for (StationEnum stationEnum:StationEnum.values())
   {
      if (stationEnum.getKey()==key)
      {
            return stationEnum.getValue();
      }
   }
   return "测试工站";
}

可以看到几行代码就搞定了。而且代码重用性高,可维护性好。想添加工站或者减少工站直接在枚举类型中改变就可以了。不用修改大量的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值