Skip to content

Optional API

Jeonghyun Kang edited this page May 23, 2022 · 1 revision

Optional 실습

Optional<OnlineClass> optional = springClasses.stream()
        .filter(oc -> oc.getTitle().startsWith("spring"))
        .findFirst();

검사 안하고 꺼내기

OnlineClass onlineClass = optional.get();

if 문으로 검사

if (optional.isPresent())
    OnlineClass onlineClass1 = optional.get();

orElse

OnlineClass onlineClass2 = optional.orElse(createNewClass());

orElseGet

OnlineClass onlineClass3 = optional.orElseGet(App::createNewClass);

orElseThrow

OnlineClass onlineClass4 = optional.orElseThrow(IllegalStateException::new);

filter

  • return type은 Optional 타입
Optional<OnlineClass> onlineClass5 = optional.filter(oc -> !oc.isClosed());

flatMap

  • Optional이 두 겹인 상황에서는
Optional<Optional<Progress>> progress = optional.map(OnlineClass::getProgress);
Optional<Progress> optionalProgress1 = progress.orElse(Optional.empty());
  • flatMap을 사용하여 한 번에 처리가 가능하다.
Optional<Progress> optionalProgress2 = optional.flatMap(OnlineClass::getProgress);