枚举的概念
枚举是java中的一种特殊类型
枚举的作用:“是为了做信息的标志和信息的分类”
简单地说就是枚举是一个被命名的整数常数的集合,用于声明一组带标识符的常数
开发中用到枚举类的时候,会有根据name/type 获取枚举value的情况
简单的一个model
第一种方法:for循环查找
package me.zhengjie.aspect;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
/**
* 业务 枚举类
*/
public enum TestBizEnum {
/**
* 订单管理
*/
ORDER_MANAGEMENT(0, "order management"),
/**
* 用户信息
*/
USER_INFO(1, "user info"),
/**
* 部门管理
*/
DEPT_MANAGEMENT(2, "dept management");
private final Integer type;
private final String biz;
TestBizEnum(Integer type, String biz) {
this.type = type;
this.biz = biz;
}
public String getBiz() {
return biz;
}
public Integer getType() {
return type;
}
/**
* findByType
* @param type
* @return
*/
public static TestBizEnum findByType(Integer type) {
//循环遍历对应的 TestBizEnum
for (TestBizEnum item : values()) {
if(item.getType().equals(type)) {
return item;
}
}
return null;
}
}
第二种方法:静态内部类
package me.lcc.aspect;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
/**
* 业务 枚举类
*/
public enum TestBizEnum {
/**
* 订单管理
*/
ORDER_MANAGEMENT(0, "order management"),
/**
* 用户信息
*/
USER_INFO(1, "user info"),
/**
* 部门管理
*/
DEPT_MANAGEMENT(2, "dept management");
private final Integer type;
private final String biz;
TestBizEnum(Integer type, String biz) {
this.type = type;
this.biz = biz;
}
public String getBiz() {
return biz;
}
public Integer getType() {
return type;
}
static Map<Integer, TestBizEnum> varMap;
//静态代码块在类加载时执行
static {
varMap = new HashMap<>(values().length);
for (TestBizEnum item : values()) {
varMap.put(item.type, item);
}
}
/**
* 通过type 在varMap里查找对应的枚举类
* @param type
* @return
*/
public static TestBizEnum findByType(String type) {
//如果没有对应type 默认返回null
return StringUtils.isBlank(type) ? null : varMap.getOrDefault(type, null);
}
}
通过静态代码块,在类加载的时候把所有的枚举类型存入到Map里面,然后再用get得到对应的枚举数据。
验证
测试:
/**
* @author liuchengcheng
* @Date 2022/11/8 17:54
*/
public class Test {
public static void main(String[] args) {
TestBizEnum bizEnum = TestBizEnum.findByType(0);
System.out.println("biz: "+bizEnum.getBiz());
System.out.println("type: "+bizEnum.getType());
System.out.println("name: "+bizEnum.name());
}
}
输出: