inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

Optional.of vs Optional.ofNullable

492

작성자 없음

작성한 질문수 0

0

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

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

Optional 관련 질문입니다.

 

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

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

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

spring mvc spring-boot

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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의 차이점과 각각의 사용 상황에 대해 더 깊은 이해를 돕기를 바랍니다.

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

..

0

74

2

Unused property.....

0

98

2

project JDK is misconfigured

0

129

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

82

2

단위/통합 테스트 버전충돌 문제

0

91

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

227

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

101

2

윈도우 build test오류 질문

1

102

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

98

2

테스트 실행 시 에러 질문

0

289

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

128

1

윈도우 gradlew.bat 에러

0

167

1

@PostMapping("/members/new")가 동작하지 않습니다

0

88

1

java static class와 kotlin class

0

77

1

스프링 DB연결

0

126

1

소요 시간

0

85

2

ddl.sql에 빨간 밑줄

1

101

2

welcome page 에러

0

180

3

잘 모르겠습니다.

0

163

2

fail을 똑같이 쳤는데 오류가 발생해요

0

156

2

index.html Welcome page

0

120

1

프로젝트 gradle-groovy ?

0

364

1

테스트코드 메서드명 한글

0

198

2