Java中枚举类型的一种使用方式

所属分类: 软件编程 / java 阅读数: 101
收藏 0 赞 0 分享

今天改同事的代码发现同事的代码中有大量的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 "测试工站";
}

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

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多