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