[JAVA8] Optional 소개

이재훈·2023년 5월 7일
0

JAVA8

목록 보기
7/23

인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.

"더 자바, JAVA8 바로가기"


Optional

자바 프로그래밍에서 NPE을 정정 보게되는 이유

  • null을 리턴하고 null 체크를 하지 않았기 때문이다.

메소드에서 작업 중 특별한 상황에서 값을 제대로 리턴할 수 없는 경우 선택할 수 있는 방법.

  • 예외를 던진다.(비싸다, 스택트레이스를 찍어두니까)
  • null을 리턴한다. (비용 문제가 없지만 그 코드를 사용하는 클라이언트 코드가 주의해야한다.)
  • (자바 8부터) Optional을 리턴한다. (클라이언트 코드에게 명시적으로 빈 값일 수도 있다는 것을 알려주고, 빈 값인 경우에 대한 처리를 강제한다.)

Optional

  • 오직 값 한 개가 들어 있을 수도 있는 컨테이너

주의할 것

  • 리턴값으로만 쓰기를 권장한다. (메소드 매개변수 타입, 맵의 키 타입, 인스턴스 필드 타입으로 쓰지 말자.)
  • Optional을 리턴하는 메소드에서 null을 리턴하지 말자.
  • 프리미티브 타입용 Optional이 따로 있다. OptionalInt, OptionalLong ...
  • Collection, Map, Stream Array, Optional은 Optional로 감싸지 말자.
profile
부족함을 인정하고 노력하자

0개의 댓글