728x90
반응형
향상된 for문(enhanced for loop) 도 null 체크가 필요합니다.
이유:
향상된 for문은 내부적으로 Iterator를 사용하여 컬렉션을 순회합니다.
따라서 null을 전달하면 null.iterator()를 호출하는 것과 동일하게 동작하여 NullPointerException 이 발생합니다.
예제 코드
❌ 잘못된 코드 (NullPointerException 발생 가능)
for (ResYhIftkUserManagersDTO mng : userchat.getManagers()) {
// userchat.getManagers()가 null이면 여기서 NullPointerException 발생
System.out.println(mng.getEmail());
}
✅ 올바른 코드 (null 체크 추가)
if (userchat.getManagers() != null) {
for (ResYhIftkUserManagersDTO mng : userchat.getManagers()) {
System.out.println(mng.getEmail());
}
}
결론
- null 체크 없이 isEmpty() 만 체크하는 것은 null일 경우 예외가 발생할 수 있음
- 향상된 for문을 사용할 때도 null 체크는 필수! (if (collection != null) {})
- 만약 null을 안전하게 처리하려면 Optional이나 Collections.emptyList() 를 활용하는 것도 가능
✅ Optional을 활용한 안전한 처리:
for (ResYhIftkUserManagersDTO mng : Optional.ofNullable(userchat.getManagers()).orElse(Collections.emptyList())) {
System.out.println(mng.getEmail());
}
이렇게 하면 userchat.getManagers()가 null일 때 자동으로 빈 리스트를 반환하여 NullPointerException 없이 실행됩니다.
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] .stream() 을 사용했는데 순서가 유지되지 않는 경우 (0) | 2025.01.23 |
---|---|
[JAVA] 스트림에서 데이터를 정렬하기 (0) | 2025.01.21 |
[JAVA] Collectors.toMap을 사용해 중복 제거 (0) | 2025.01.20 |
[JAVA] Collectors.joining (0) | 2025.01.19 |
[JAVA] boolean / Boolean (0) | 2025.01.12 |