[내일배움캠프] TIL - Optinal 타입 처리

Euiyeon Park·2026년 10월 7일

내일배움캠프

목록 보기
7/9
post-thumbnail

Optional<T>

  • Optional<T>는 값이 있을 수도 있고, 없을 수도 있는 상황을 표현하는 타입
  • null로 인한 (NPE)를 안전하게 처리 위해 제공되는 래퍼 클래스
  • 실제 객체를 포장하는 상자에 비유

Optional 생성 방법

  • Optional.empty(): 빈 Optional 객체 생성
  • Optional.of(value): 값이 있는 Optional 객체를 생성(만약 value가 null이면 NPE 발생)
  • Optional.ofNullable(value): value가 null일 수도 아닐 수도 있을 때 사용, null이면 빈 Optional을 반환
Optional<String> empty = Optional.empty();
Optional<String> name = Optional.of("의연");
Opitonal<String> unknown = Optional.ofNull(null);

Optional 처리 방법

값 확인

  • isPresent(): Optional 내부에 값이 있으면 true, 없으면 false를 반환
  • isEmpty(): Optional 내부에 값이 없으면 true, 있으면 false를 반환
if (optional.isPresent()) {
    System.out.println(optional.get());
}

if (optional.isEmpty()) {
    System.out.println(optional.get());
}

값 꺼내기

  • get(): Optional 내부의 값을 반환, 없으면 NoSuchElementException 발생
  • orElse(value): Optional 내부에 값이 있으면 반환하고, 없으면 전달한 value를 반환
  • orElseGet(...): Optional 내부에 값이 있으면 반환하고, 없으면 전달한 함수를 실행하여 그 결과를 반환
  • orElseThrow(...): Optional 내부에 값이 있으면 반환하고, 없으면 지정한 예외를 발생
    • Spring Data JPA의 findById()는 Optional을 반환
String name = optional.get();
String name = optional.orElse("Guest");
String name = optional.orElseGet(() -> "Guest");
User user = userRepository.findById(id)
        .orElseThrow(() -> new IllegalArgumentException("사용자를 찾을 수 없습니다."));

값 처리

  • ifPresent(...): Optional 내부에 값이 있을 때만 전달한 동작을 실행
optional.ifPresent(name -> {
    System.out.println(name);
});
profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글