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)
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)