gpt4 book ai didi

Java:如何将 String ArrayList 分配给 List

转载 作者:行者123 更新时间:2023-11-30 10:06:14 24 4
gpt4 key购买 nike

我有一个枚举类,其中每个枚举都有一个字符串值。

我想用列表中的枚举类型创建一个列表<>。这里的字符串是枚举的值。

是否可以在初始化时直接赋值?如果是,最好的方法是什么?

这是一个示例代码:

public class SomeController {

public enum MyEnum {
A("a"),
B("b"),
C("c");

private final String value;

MyEnum(String value) {
this.value = value;
}
}

public String handler(
@RequestParam(name = "enumList") List<MyEnum> myEnumList ) {

//do something with myEnumList

return "something";
}

}

附言我需要像上面那样直接将 String-list 分配给 MyEnum-list。我不能在字符串列表上循环并一个一个地添加。

最佳答案

首先创建枚举中所有枚举常量的映射:

private static final Map<String, MyEnum> CONSTANTS = Arrays.stream(values())
.collect(Collectors.toMap(e -> e.value, e -> e));

然后在枚举中使用 @JsonCreator 创建一个查找方法:

@JsonCreator
public static MyEnum fromValue(String value) {
MyEnum myEnum = CONSTANTS.get(value);
if(myEnum == null) {
throw new NoSuchElementException(value);
}
return myEnum;
}

Jackson 将检测 json creator 方法并使用它将您的字符串列表转换为枚举列表(这一切都在进入您的 handler 方法之前完成)

关于Java:如何将 String ArrayList 分配给 List<Enum>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54749464/

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