[Java] Optional

Fortice·2022년 4월 18일
0

Java

목록 보기
5/7

Stream의 종결 처리를 이해하기 위해 Optional 공부

Optional

  • NPE(NullPointerException)
    • Null 상태인 오브젝트를 레퍼런스 할 때 발생
    • Runtime Error이기 때문에 실행 전 파악 힘듦

Optional

  • 있을 수도 있고 없을 수도 있다
  • Null 일수도, 아닐 수도 있는 오브젝트를 담은 상자
  • 생성 방법
    • public static <T> Optional<T> of(T value)
    • public static <T> Optional<T> empty()
    • public static <T> Optional<T> ofNullable(T value)
  • 안에 있는 값 다루기
    • public boolean isPresent()
    • public T get()
      • 비어있으면 에러
      • 따라서 get() 호출 전 isPresent() 호출하여 확인
    • public T orElse(T other)
      • null이 아니라면 Optional 안의 값, null이라면 T형(같은 타입) 객체
    • public T orElseGet(Supplier<? extends T> supplier)
      • null이 아니라면 Optional 안의 값, null이라면 supplier로 공급되는 값
    • public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throw X
      • null이라면 exceptionSupplier로 공급되는 exception throw
  • 응용
    • `public void ifPresent(Consumer<? super T> action)
      • null이 아니라면 action을 실행
    • public <U> Optional<U> map(Function<? super T, ? extends U> mapper)
      • Optional의 타입과 mapper의 리턴 타입이 같읍
    • `public Optional<U flatMap(Function<? super T, ? extends Optional<? extends U>> mapper)
      • Optional이 중첩이라면 하나로 만들어줌
profile
서버 공부합니다.

0개의 댓글