java查询枚举_Java枚举的反向查找

本文介绍了如何在Java中进行枚举的反向查找,从最简单的`valueOf`方法到自定义查找方法,以及如何通过`EnumFindHelper`类优化查找过程,减少代码重复,实现依赖注入的思路。
摘要由CSDN通过智能技术生成

java的枚举常常被用来替代常量值,每个枚举值代表一个特定的常数。

在反序列化时有常常需要用到常数到枚举的转换,这就涉及到枚举的反向查找。

1、从枚举名反向查找枚举

这种方法是最先使用也最为简便的

可以用到枚举的静态方法valueOf(String

name)

valueOf方法为内置方法,使用简便,但在查找不到枚举时会抛出异常。

熟悉异常的同学可能知道异常抛出时,需要收集虚拟机的调用堆栈上下文信息,对性能影响较大。

使用时,常常需要使用这么一个反序列化查找方法

E

find(String name, E defaultValue),在查找不到时能够返回一个默认值而不是抛出异常

2、从枚举值所包含的描述值反向查找枚举

例如这种枚举定义

public enum SomeEnum{

A("ADes", 1),

B("BDes", 2),

unknown("UNKNWONDes", 3);

private string des;

private int order;

private SomeEnum(string des, int order){

this.des = des;

this.order = order;

}

}

此时可以在枚举类中增加一个HashMap,并在类加载时初始化好。

public enum SomeEnum{

A("ADes"),

B("BDes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值