Optional<T> 클래스는 T 타입의 객체를 포장하는 Wrapper class다. 모든 타입의 객체가 들어갈 수 있다.
Optional 객체를 사용하면 NullPointerException 예외 피할 수 있다. 널 값으로 인해 발생하는 예외를 처리할 수 있게 된다.
스프링부트에서 JPA를 사용할 때, JpaRepository를 통해 데이터를 받아올 때 null 값인 경우를 대비해 Optional 타입으로 값을 받아온다.
Optional<Item> item = itemRepository.findById(id);
Optional 메소드
static <T> Optional<T> empty() | 아무런 값도 가지지 않는 비어있는 Optional 객체를 반환함. |
T get() |
Optional 객체에 저장된 값을 반환함. |
boolean isPresent() | 저장된 값이 존재하면 true를 반환하고, 값이 존재하지 않으면 false를 반환함. |
static <T> Optional<T> of(T value) |
null이 아닌 명시된 값을 가지는 Optional 객체를 반환함. |
static <T> Optional<T> ofNullable(T value) |
명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체를 반환하며, 명시된 값이 null이면 비어있는 Optional 객체를 반환함. |
T orElse(T other) |
저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환함. |
T orElseGet(Supplier<? extends T> other) |
저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환함. |
<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) |
저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생시킴. |
'study > java' 카테고리의 다른 글
자바 코딩 테스트 삽질 - 마침표로 split 하기 (0) | 2021.04.30 |
---|---|
엉터리 정리 - map(), orElseGet() (0) | 2021.04.08 |
자바/JAVA JAR (0) | 2021.03.15 |
자바/JAVA 스트림(Stream) (0) | 2021.03.13 |
자바/JAVA 람다식 (0) | 2021.03.12 |