您的位置 首页 java

JAVA中常量有这么多坑,该如何避免入坑,这样做就可以全部化解

如果你在工作中还在大量的使用常量,我建议你换到枚举上来吧!假设你需要提供一个接口给前端调用,定义了一些错误码,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);

}

到这里介绍完了,我不知道别的公司使用的频率,但是在京东真的是大量使用!有任何问题请留言,我会一一回复!

你们公司是不是也是这样用呢?

更多干货请关注我“纯洁的程序员”

文章来源:智云一二三科技

文章标题:JAVA中常量有这么多坑,该如何避免入坑,这样做就可以全部化解

文章地址:https://www.zhihuclub.com/194995.shtml

关于作者: 智云科技

热门文章

网站地图