如何修复声纳警告的一行初始化?

时间:2018-10-24 18:26:21

标签: java-8 java-stream

response.setPeopleHealth(new ArrayList<String>() {{
       for(HealthEnum e :HealthEnum.values()) { 
          add(e.getValue());
       }
      }})

sonarlint为此发出警告。

我尝试转换为单调,但不适用于for,因为它不能像arraylist一样添加。

我可以使用lambda还是流?

1 个答案:

答案 0 :(得分:4)

对于初学者来说,停止使用new ArrayList<String>() {{...的著名反模式,而不是考虑问题的开始,您需要一个数组-需要一个List,因此:

List<String> list = Arrays.stream(HealthEnum.values())
      .map(HealthEnum::getValue)
      .collect(Collectors.toCollection(ArrayList::new));

,然后将此ArrayList传递到您想要的位置,例如:

response.setPeopleHealth(list);