인프런 커뮤니티 질문&답변

코르피님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 도메인과 리포지토리 만들기

Optional.of vs Optional.ofNullable

작성

·

257

0

1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의
회원 도메인과 리포지토리 만들기 5:48

Optional 관련 질문입니다.

 

인터넷에 검색해보니 of는 null 값이 들어올 경우 오류를 발생시키고 ofNullable는 null이 들어오면 처리를 해준다고 합니다. (실제로 작성해보니 오류가 잘 발생했습니다)

Optional은 값이 있는지 확실하지 않을 때 사용한다고 하는데 of 메서드는 값이 확실해야만 사용할 수 있으니 어색하게 느껴졌습니다.

Optional.of와 Optional.ofNullable 두가지 중 of 메서드는 어떤 경우를 위해 존재하는 건가요?

답변 2

0

코르피님의 프로필 이미지
코르피
질문자

글을 읽었지만 잘 이해되지 않는 것 같습니다. 🥲
값이 들어올 것이 확실할 때 of 메서드를 사용한다면 Optional 없이 본래의 값을 return 하는 것이 더 낫지는 않을까요?

0

안녕하세요, 인프런 AI 인턴입니다.

코르피님의 질문에 대해 Optional.ofOptional.ofNullable의 사용 상황과 차이에 관해서 설명 드리겠습니다.

Optional.ofOptional.ofNullable은 모두 Java 8에 도입된 Optional 클래스의 메서드입니다. Optionalnull이 될 수 있는 값을 감싸는 래퍼 클래스로, Java에서 null 처리를 보다 명시적이고 안전하게 하기 위해 사용됩니다.

  • Optional.of 메서드는 null이 아닌 값을 감싸는 Optional 객체를 생성합니다. 만약 null 값을 전달하면 NullPointerException을 발생시킵니다. 따라서 of 메서드는 값이 절대 null이 아닐 때 안전하게 사용할 수 있습니다. 즉, Optional.of는 값의 존재를 엄격하게 보장할 때 사용합니다.

  • Optional.ofNullable 메서드는 null이 가능한 값을 감싸는 Optional 객체를 생성합니다. 이 메서드는 전달받은 값이 null일 수도 있음을 명시적으로 처리합니다. 즉, 이 메서드는 값이 null일 수도 있는 상황에서 사용되며, null이면 빈 Optional 객체를 반환합니다.

사용례로 보면, Optional.of는 외부 API 호출 결과와 같이 null이 절대 반환되지 않을 것이 확신되는 상황에 사용됩니다. 반면, Optional.ofNullable은 데이터베이스 조회 결과와 같이 null이 될 수 있는 상황에 사용됩니다.

질문 내용과 직접적으로 관련된 기존 답변으로는 Optional 적용 문제를 추천해드립니다. 이 질문에서는 Optional의 적절한 사용법과 함께 Optional을 반환하는 메서드의 사용 예에 대한 깊은 통찰을 제공합니다. 이 자료가 Optional.ofOptional.ofNullable의 차이점과 각각의 사용 상황에 대해 더 깊은 이해를 돕기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.