본문 바로가기

programming/java

Item 55. 옵셔널 반환은 신중히 하라

[WHY]

  • Optional을 사용한다고 무조건 득이 되는 것이 아니기 때문이다.
    • Collection, Stream, 배열, Optional 같은 컨테이너 타입은 Optional을 사용할 필요가 없다.
    • Wrapper 클래스에 Optional을 적용하는 것 보다 Primitive 타입을 Optional에서 사용하도록 구현한 OptionalInt와 같은 클래스를 사용하는 것이 좋기 때문
    • null을 박싱한 Optinal을 사용하면 안되기 때문

[WHEN]

  • 결과가 없을 수 있으며, 클라이언트가 이 상황을 특별하게 처리해야 하는 경우
  • 사용자에게 반환 값의 여부를 확인해야 한다는 것을 명시하는 상황

[HOW]

Optional 의 메서드를 활용하자.

get() 값을 조회한다.
orElse() 값을 조회한다. 없다면 기본값을 반환한다.
orElseThrow() 값을 조회한다. 없다면 예외 발생시킨다.
orElseGet() 값을 조회한다. 없다면 supplier을 통해서 값을 생성 반환한다.
filter() 필터링한다
map() 값을 변환한다. 컬렉션의 map의 기능을 상상
flatMap() 값을 변환한다. 컬렉션의 flatMap의 기능을 상상
ifPresent() 값의 존재 여부를 확인한다.

 

더 자세한 사용법은 다음 블로그 글을 참조하는 것이 좋겠다.

 

[Java] Optional 올바르게 사용하기

Intro 자바가 8버전으로 넘어오며 추가된 기능들이 굉장히 많이 있습니다. 보통 가장 먼저 언급되는 Lamdba와 Stream API 뿐만 아니라 조금의 차이는 있지만 Joda-Time을 그대로 가져온듯한 날짜와 시간 A

shanepark.tistory.com