2

我需要从逗号分隔的字符串创建枚举列表。我在属性文件中有一些配置,主要是HttpStatus

像:

some.config=TOO_MANY_REQUESTS,GATEWAY_TIMEOUT,BAD_GATEWAY 

此配置可以绑定到 LIST,如下所示:

@Value("#{'${some.config}'.split(',')}")
private List<HttpStatus> statuses;

现在可以用我的一行代码来完成。我收到的字符串如下:

 @Bean(name = "somebean")
 public void do(@Value("${some.config:}") String statuses) throws IOException {

        private List<HttpStatus>  sList = StringUtils.isEmpty(statuses) ? 
        globalSeries : **Arrays.asList(statuses.split("\\s*,\\s*"));**

 }

Arrays.asList(series.split("\s*,\s*")); 将创建一个字符串列表,现在我可以创建一个枚举列表,否则我需要迭代临时列表然后创建一个枚举列表。

4

2 回答 2

8

您可以只使用流并将所有String值映射到使用的Enum值中Enum#valueOf

Arrays.stream(statuses.split("\\s*,\\s*"))
      .map(HttpStatus::valueOf)
      .collect(Collectors.toList());
于 2018-06-08T09:25:04.623 回答
5

您还可以使用 Pattern 来完成手头的任务:

Pattern.compile(regex)
       .splitAsStream(myString)
       .map(HttpStatus::valueOf)
       .collect(toList());
于 2018-06-08T09:30:27.787 回答