JAVA

[JAVA] 확장 for문 null 체크

오선지♬ 2025. 2. 14. 19:49
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
반응형