자바 Optional
NullPointerException 을 방지하기 위해 Java8에 Optional 클래스가 추가되었다.
if문등을 써 반복적인 null 체크를 방지하기위해 Optional
- Optional 객체 생성 Optional은 3가지 static 팩토리 메서드를 제공한다.
Optional.empty() : 빈 Optional 객체 생성
Optional.of(value) : value값이 null이 아닌 경우에 사용
Optional.ofNullable(value) : value값이 null인지 아닌지 확실하지 않은 경우에 사용
- Optional이 담고 있는 객체에 접근 및 사용방법
ifPresent(함수)
null인 경우에 default 값 반환
orElse(T other) : 비어 있으며 인자를 반환
orElseGet(Supplier<? extends T> other) : 함수형 인자의 반환값을 반환
null인 경우에 예외를 throw
orElseThrow(Supplier<? extends X> exceptionSupplier) : 인자 함수에서 생성된 예외를 던진다
- Stream에서 Optional 사용법
- filter(Predicate) : 조건에 따라 요소들 필터링하기
- map() : 요소들의 값 형태 변환하기
map(Function<? super T,? extends R> mapper) - flatMap() : 요소를 flat하고나서 map으로 값 형태를 반환하기
flatMap(Function<? super T,? extends Stream<? extends R» mapper)
- 자바9에 추가된 Optional 메서드
or() : Optional이 empty인 경우에 다른 Optional을 반환
ifPresentOrElse() : Optional에 값이 존재하면 action 수행하고 아닌 경우에는 else 부분을 수행
stream() : Optional 객체를 Stream 객체로 변환하기 위해 사용