JAVA: Optional 클래스

용씨·2021년 9월 11일
0
post-thumbnail

Optional 클래스

java.util.Optional<T> 클래스

사용 이유

Optional 객체는 NullPointerException 예외를 제공하는 메서드를 가지고 있다.
따라서 복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있다.

Optional 객체 생성

1. Optional.ofNullable

value가 null인 경우 NPE 예외를 던진다.
반드시 값이 있어야 하는 객체인 경우 ofNullable() 메서드를 사용한다.

Optional<String> opt1 = Optional.ofNullable("자바 객체1");

2. Optional.of

value가 null인 경우 비어있는 Optional 객체를 반환한다.
값이 null일 수도 있는 객체인 경우 of() 메서드를 사용한다.

Optional<String> opt2 = Optional.of("자바 객체2"):

3. Optional.empty

비어있는 Optional 객체를 생성한다.
조건에 따라 분기를 태워야 하고 반환할 값이 없는 객체인 경우 empty() 메서드를 사용한다.

Optional<String> opt3 = Optional.empty();

Optional 객체 접근

1. Optional 객체의 값이 null인 경우 isPresent() & get()

get() 메서드를 사용하면 Optional 객체에 저장된 값에 접근할 수 있다.
만약 Optional 객체에 저장된 값이 null이면, NosuchElementException 예외가 발생하므로 get() 메서드를 호출하기 전에 isPresent() 메서드를 사용하며 Optional 객체에 저장된 값의 null 여부를 확인해야 한다.

if(opt1.isPresent()) {
	System.out.println(opt1.get());
}
// 실행 결과: 자바 객체1

2. null 대신 대체할 값 지정: orElse~

1. orElse()

저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환한다.

System.out.println(opt3.orElse("빈 Optional 객체"));

2. orElseGet()

저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환한다.

System.out.println(opt3.orElseGet(String::new));

2. orElseThrow()

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

참고 http://tcpschool.com/java/java_stream_optional

profile
아침형 인간이 목표

0개의 댓글