본문 바로가기

study/java

엉터리 정리 - java.util.Optional<T>


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)

저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생시킴.



참고 자료 : www.tcpschool.com/java/java_stream_optional

'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