Search code examples
javajava-8spring-elspring-config

Create List of enum from comma separated String in Java


I need to create a List of enum from a comma separated String. I have some configurations in properties file which are mainly a list of HttpStatus

like:

some.config=TOO_MANY_REQUESTS,GATEWAY_TIMEOUT,BAD_GATEWAY 

This configurations can be bind to a LIST as:

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

Now can this be done with a single line of my code. I am receiving the String as following:

 @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*")); will create a List of string, now can I create a List of enum instead, otherwise I need to iterate the temp List then create a List of enum.


Solution

  • You could just use a stream and map all the String values into the Enum values using Enum#valueOf

    Arrays.stream(statuses.split("\\s*,\\s*"))
          .map(HttpStatus::valueOf)
          .collect(Collectors.toList());