gpt4 book ai didi

java - 从 String 反序列化 EnumS 的优雅方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:01 24 4
gpt4 key购买 nike

我想连载一些 EnumSet<FooType>String使用其 toString()方法。

例如:EnumSet.of(FooType.COMMON, FooType.MEDIUM).toString()会给 [COMMON, MEDIUM] .

问题是关于将这样的字符串反序列化回 EnumSet<FooSet> 的优雅方法。 .我正在寻找一些众所周知的库(可能像 apache-commons )或此类东西的标准 Util 类。

类似于:EnumSetUtil.valueOf(FooType.class, "[COMMON, MEDIUM]")

我是这样实现的:

public static <E extends Enum<E>> EnumSet<E> valueOf(Class<E> eClass, String str) {
String[] arr = str.substring(1, str.length() - 1).split(",");
EnumSet<E> set = EnumSet.noneOf(eClass);
for (String e : arr) set.add(E.valueOf(eClass, e.trim()));
return set;
}

但是,可能有一个现成的解决方案,或者一个非常简单的方法来做到这一点。

最佳答案

在 Java 8 中,你可以用 Lambda expressions 做这样的事情和流:

EnumSet.copyOf(Arrays.asList(str.split(","))
.stream().map(FooType::valueOf).collect(Collectors.toList()))

关于java - 从 String 反序列化 EnumS 的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com