Iterable.forEach() 및 Map.forEach() 호출을 보고합니다.
이 검사는 이전 Java 버전과의 하위 호환성을 위해 다운그레이드하는 데 도움이 될 수 있습니다.
예:
String joinNonEmpty(List<String> list) {
return list.stream() // 스트림을 루프로 변환할 수 있습니다
.filter(s -> !s.isEmpty())
.map(String::trim)
.collect(Collectors.joining(", "));
}
빠른 수정을 적용한 후:
String joinNonEmpty(List<String> list) {
StringJoiner joiner = new StringJoiner(", ");
for (String s : list) {
if (!s.isEmpty()) {
String trim = s.trim();
joiner.add(trim);
}
}
return joiner.toString();
}
때때로 이 검사로 인해 약간의 의미 변경이 있을 수 있습니다. 스트림이 쇼트 서킷될 때 실제로 얼마나 많은 요소를 읽을 지 지정되지 않았으므로 쇼트 서킷과 관련하여 특별한 주의를 기울여야 합니다.
검사 구성:
인식되지 않은 소스를 사용하는 스트림에 대한 변환을 제안하려면 Stream.iterator()를 통해 알 수 없는 Stream 소스 반복 옵션을 사용하세요. 이 경우 반복자는 스트림으로부터 생성됩니다. 예를 들어, 체크박스가 선택되면, 제안된 변환이 여기에 표시됩니다:
List<ProcessHandle> handles = ProcessHandle.allProcesses().collect(Collectors.toList());
이 경우 결과는 다음과 같습니다:
List<ProcessHandle> handles = new ArrayList<>();
for (Iterator<ProcessHandle> it = ProcessHandle.allProcesses().iterator(); it.hasNext(); ) {
ProcessHandle allProcess = it.next();
handles.add(allProcess);
}
2017.1의 새로운 기능