java enum 汉字_java enum字符串匹配

我有一个枚举如下:

public enum ServerTask {

HOOK_BEFORE_ALL_TASKS("Execute"),

COPY_MASTER_AND_SNAPSHOT_TO_HISTORY("Copy master db"),

PROCESS_CHECKIN_QUEUE("Process Check-In Queue"),

...

}

我还有一个字符串(比如string =“Execute”),我想根据它与之匹配的枚举中的字符串,将其作为ServerTask枚举的实例.有没有比在我想要匹配的字符串和枚举中的每个项目之间进行相等性检查更好的方法呢?因为我的枚举很大,所以看起来这会是很多if语句

解决方法:

在某种程度上,你将不得不迭代你拥有的整个枚举集,并且你必须将它们相等 – 通过映射结构(初始填充)或通过基本循环.

通过一个基本的循环很容易完成,所以我没有看到你不想走这条路的任何理由.下面的代码片段假定该字段名为friendlyTask.

public static ServerTask forTaskName(String friendlyTask) {

for (ServerTask serverTask : ServerTask.values()) {

if(serverTask.friendlyTask.equals(friendlyTask)) {

return serverTask;

}

}

return null;

}

这种方法的警告是数据不会在内部存储,并且根据您实际拥有的枚举数量以及您想要调用此方法的次数,它将比使用地图初始化稍差.

但是,这种方法最直接.如果你发现自己处于有几百个枚举的位置(甚至超过20个是我的气味),请考虑这些枚举所代表的内容以及应该做些什么来突破它.

标签:java,enums

来源: https://codeday.me/bug/20190727/1558562.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值