본문 바로가기
Back-End/Java

Optional이란?

by 달의 조각 2022. 9. 1.

 

Class Optional<T>

 

null일 수도 있는 값을 감싸는 Wrapper 클래스이다.
코드를 작성하다보면 빈번하게 볼 수 있는 NPE(NullPointerException)을 방지할 수 있다.

Optional<String> optional = Optional.ofNullable(getName());
String name = optional.orElse("Hello!"); // 값이 없다면 'Hello!' 리턴
//값이 존재하면 로직을 함수형 인자로 넘긴다
Optional.ofNullable(member.getName())
                .ifPresent(name -> findMember.setName(name));

boolean value = optional.isPresent(); //값이 존재하는가?

//값이 존재하면 return 하고, 그렇지 않으면 예외를 던진다
Optional.orElseThrow(() ->
                new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND));

 

값이 존재한다면 Wrapping 과정을 거치고, null일 경우는 대체 함수롤 호출하므로 성능이 좋지 않다.
감싸는 값이 null이 아니라면 사용하지 않는 것이 좋다.

결과가 null일 수도 있고, null로 인해 오류가 발생할 가능성이 있을 때 반환값으로 사용해야 한다.

 

📚 Reference

댓글