本文主要是介绍Java - 通过枚举避免大量 if-else,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Java - 通过枚举避免大量 if-else
- 前提背景
- 枚举实现
- 1、定义枚举
- 2、代码优化
- 拓展:
Java - 通过枚举避免大量 if-else
前提背景
最近写代码有一个方法需要根据不同的 key 值往 Map 集合里存储 url,代码如下:
public static void getUrl(String key, Map<String, String> map) {if ("1000".equals(key)) {map.put("httpUrl", "http://11");} else if ("1001".equals(key)) {map.put("httpUrl", "http://22");} else if ("1002".equals(key)) {map.put("httpUrl", "http://33");} else if ("1003".equals(key)) {map.put("httpUrl", "http://44");} else if ("1004".equals(key)) {map.put("httpUrl", "http://55");} else if ("1005".equals(key)) {map.put("httpUrl", "http://66");} else if ("1006".equals(key)) {map.put("httpUrl", "http://77");} else if ("1007".equals(key)) {map.put("httpUrl", "http://88");}}
可以看到代码里面写了大量的 if-else,并且后期可能还会继续增加。这种写法就会显得代码特别臃肿,而且不利于维护。接下来,通过 Java 枚举的方式来简化这种代码写法。
枚举实现
1、定义枚举
import java.util.LinkedHashMap;
import java.util.Map;public enum HttpUrlEnum {HTTP_URL_1000("1000", "http://11"),HTTP_URL_1001("1001", "http://22"),HTTP_URL_1002("1002", "http://33"),HTTP_URL_1003("1003", "http://44"),HTTP_URL_1004("1004", "http://55"),HTTP_URL_1005("1005", "http://66"),HTTP_URL_1006("1006", "http://77"),HTTP_URL_1007("1007", "http://88");// 定义 keyprivate String key;// 定义 valueprivate String value;public String getKey() {return key;}public String getValue() {return value;}// 定义 构造方法HttpUrlEnum(String key, String value) {this.key = key;this.value = value;}// 获得 mappublic static Map<String, String> toMap() {Map<String, String> map = new LinkedHashMap<String, String>();for (HttpUrlEnum record : HttpUrlEnum.values()) {map.put(record.getKey(), record.getValue());}return map;}
}
2、代码优化
public static void getUrl(String key, Map<String, String> map) {Map<String, String> urlMap = HttpUrlEnum.toMap();map.put("httpUrl", urlMap.get(key));}
如上代码所示,这样的话,如果还有新的 url,只需要在枚举里面添加上相关的枚举就可以了。
拓展:
Java 如何避免代码中大量的 if else 判断
这篇关于Java - 通过枚举避免大量 if-else的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!