如果你在工作中还在大量的使用常量,我建议你换到枚举上来吧!假设你需要提供一个接口给前端调用,定义了一些错误码,1表示成功,其它表示失败,并会给出失败原因字段 tipmsg。这个时候,你是会把错误码都定义成常量还是枚举呢?
如果是常量你的代码可能是这样的:
使用枚举的话是这样的:
上面二种写法,你觉得哪种的好呢?
今天我们一起来学习使用 字符串 创建枚举,迭代所有枚举常量,获取单个 枚举值 并执行反向查找以通过字符串值查找枚举。
创建 字符串常量 枚举
使用字符串创建枚举的示例。此枚举包含部署环境及其各自的URL。
迭代所有枚举常数
要遍历所有枚举,请使用返回数组中所有枚举常量的values()方法。
for(Environment env : Environment.values())
{
System.out.println(env.name() + ” :: “+ env.getUrl());
}
输出结果:
PROD ::
SIT ::
CIT ::
DEV ::
获取单个枚举值
要获取单个枚举值(例如,从枚举常量获取prod URL)使用它的值方法,您创建。
String prodUrl = Environment.PROD.getUrl();
System.out.println(prodUrl);
输出结果:
按名称获取枚举
如果你想使用它的名字来获得枚举,那么使用valueOf()方法。
Environment sitUrl = Environment.valueOf(“SIT”);
System.out.println(sitUrl.getUrl());
输出结果:
反向查找 – 通过枚举值获取枚举
很多时候,我们将具有枚举的价值,我们将需要通过字符串值查找枚举名称。可以通过反向查找实现。
在反向查找中,枚举内部维护一个值 – 枚举的映射作为键值对。这个 Map 被搜索,应用程序需要找到枚举与它的相关联的字符串值。
//****** 反向查找实现************//
private static final Map<String, Environment> lookup = new HashMap<>();
//在加载初始化Map
static{
for(Environment env : Environment.values()){
lookup.put(env.getUrl(), env);
}
}
//反向查找的方法,供外部调用
public static Environment get(String url) {
return lookup.get(url);
}
到这里介绍完了,我不知道别的公司使用的频率,但是在京东真的是大量使用!有任何问题请留言,我会一一回复!
你们公司是不是也是这样用呢?
更多干货请关注我“纯洁的程序员”