枚举工具类 - EnumUtil
# 枚举工具类 - EnumUtil
简介
EnumUtil
是 Hutool 提供的一个枚举操作工具类,用于对未知枚举类型进行操作。枚举在 Java 中常用于表示有限、离散、明确的量,如状态、类别等。EnumUtil
提供了丰富的方法,方便开发者对枚举进行各种操作,如获取枚举名称列表、获取枚举字段值、通过条件获取对应枚举等。
# 1. 获取枚举类中所有枚举对象的名称列表
EnumUtil
提供了 getNames
方法,用于获取指定枚举类中所有枚举对象的名称列表。
import cn.hutool.core.util.EnumUtil;
import java.util.List;
// 定义枚举
public enum TestEnum {
TEST1("type1"), TEST2("type2"), TEST3("type3");
private String type;
TestEnum(String type) {
this.type = type;
}
public String getType() {
return this.type;
}
}
public class EnumUtilExample {
public static void main(String[] args) {
// 获取枚举名称列表
List<String> names = EnumUtil.getNames(TestEnum.class);
System.out.println("枚举名称列表: " + names);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
getNames(Class<E> enumClass)
:获取指定枚举类中所有枚举对象的名称列表。enumClass
:枚举类的类型。- 返回值:枚举对象名称的列表。
作用: 获取枚举类中的所有枚举对象名称,方便在开发中遍历、显示或记录枚举信息。
实际开发场景: 在需要动态展示或遍历枚举对象时,可以使用此方法获取枚举名称列表。
# 2. 获取枚举类中各枚举对象指定字段的值
EnumUtil
提供了 getFieldValues
方法,用于获取指定枚举类中每个枚举对象指定字段的值。
import cn.hutool.core.util.EnumUtil;
import java.util.List;
public class EnumUtilExample {
public static void main(String[] args) {
// 获取枚举对象字段值列表
List<Object> types = EnumUtil.getFieldValues(TestEnum.class, "type");
System.out.println("枚举字段值列表: " + types);
}
}
2
3
4
5
6
7
8
9
10
11
getFieldValues(Class<E> enumClass, String fieldName)
:获取指定枚举类中每个枚举对象的指定字段的值。enumClass
:枚举类的类型。fieldName
:要获取的字段名称。- 返回值:字段值的列表。
作用: 获取枚举对象的特定字段值,便于根据字段进行操作或展示。
实际开发场景: 在需要基于枚举对象的某个特定字段进行判断或操作时,可以使用此方法获取所有字段值。
# 3. 根据条件获取对应枚举对象
EnumUtil
提供了 getBy
方法,通过传入一个 lambda 表达式和对应的值,来获取与之匹配的枚举对象。
import cn.hutool.core.util.EnumUtil;
public class EnumUtilExample {
public static void main(String[] args) {
// 根据ordinal值获取枚举对象
TestEnum testEnum = EnumUtil.getBy(TestEnum::ordinal, 1);
System.out.println("获取的枚举对象: " + testEnum);
}
}
2
3
4
5
6
7
8
9
getBy(Function<E, T> mapper, T value)
:根据指定条件获取枚举对象。mapper
:用于提取枚举对象属性的函数。value
:要匹配的值。- 返回值:匹配的枚举对象。
作用: 根据条件灵活地获取枚举对象,适用于需要通过属性值查找枚举对象的场景。
实际开发场景: 在需要通过枚举对象的某个属性值来获取对应枚举对象时,可以使用此方法。
# 4. 根据条件获取枚举对象的字段值
EnumUtil
提供了 getFieldBy
方法,通过传入一个 lambda 表达式和对应的值,来获取与之匹配的枚举对象的字段值。
import cn.hutool.core.util.EnumUtil;
public class EnumUtilExample {
public static void main(String[] args) {
// 根据ordinal值获取枚举对象的type字段值
String type = EnumUtil.getFieldBy(TestEnum::getType, Enum::ordinal, 1);
System.out.println("获取的枚举字段值: " + type);
}
}
2
3
4
5
6
7
8
9
getFieldBy(Function<E, R> fieldMapper, Function<E, T> mapper, T value)
:根据指定条件获取枚举对象的字段值。fieldMapper
:用于提取字段值的函数。mapper
:用于提取枚举对象属性的函数。value
:要匹配的值。- 返回值:匹配的枚举对象的字段值。
作用: 根据条件获取枚举对象的字段值,适用于需要通过属性值查找并获取枚举对象字段的场景。
实际开发场景: 在需要通过枚举对象的某个属性值获取对应字段值时,可以使用此方法。
# 5. 获取枚举字符串值和枚举对象的映射
EnumUtil
提供了 getEnumMap
方法,用于获取枚举名称与枚举对象的映射关系,结果使用 LinkedHashMap
确保顺序。
import cn.hutool.core.util.EnumUtil;
import java.util.Map;
public class EnumUtilExample {
public static void main(String[] args) {
// 获取枚举名与枚举对象的映射关系
Map<String, TestEnum> enumMap = EnumUtil.getEnumMap(TestEnum.class);
System.out.println("枚举名与对象的映射: " + enumMap);
}
}
2
3
4
5
6
7
8
9
10
11
getEnumMap(Class<E> enumClass)
:获取枚举名称与枚举对象的映射。enumClass
:枚举类的类型。- 返回值:一个
Map
,键为枚举名,值为对应的枚举对象。
作用: 获取枚举对象的名称与实例之间的映射,便于通过名称快速查找枚举对象。
实际开发场景: 在需要通过枚举名称获取对应枚举对象时,可以使用此方法生成映射关系。
# 6. 获取枚举名称与指定字段值的映射
EnumUtil
提供了 getNameFieldMap
方法,用于获取枚举名称与指定字段值的映射关系。
import cn.hutool.core.util.EnumUtil;
import java.util.Map;
public class EnumUtilExample {
public static void main(String[] args) {
// 获取枚举名称与type字段值的映射关系
Map<String, Object> enumMap = EnumUtil.getNameFieldMap(TestEnum.class, "type");
System.out.println("枚举名与type字段值的映射: " + enumMap);
}
}
2
3
4
5
6
7
8
9
10
11
getNameFieldMap(Class<E> enumClass, String fieldName)
:获取枚举名称与指定字段值的映射。enumClass
:枚举类的类型。fieldName
:要获取的字段名称。- 返回值:一个
Map
,键为枚举名,值为对应字段的值。
作用: 获取枚举对象的名称与字段值之间的映射,便于通过名称快速查找字段值。
实际开发场景: 在需要通过枚举名称获取对应字段值时,可以使用此方法生成映射关系。
总结
EnumUtil
工具类在处理枚举操作方面提供了便捷且强大的工具方法。它适用于各种需要与枚举类型交互的场景,帮助开发者更高效地进行枚举的操作和管理,提高开发效率。