inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

Optional의 생성과 값 획득

Optionl.of에 대한 질문

116

service

작성한 질문수 26

1

Optinal은 "값이 없을 수도 있다" 라는 의도를 드러내기 위해 사용하잖아요.

근데 Optional의 정적 생성자 메서드 중에 Optional.of()를 보면, null일 경우 NPE가 발생하는데, 그럼 Optional을 사용하는 의미가 없지 않나요?

Optional.ofNullable과 empty는 사용의도라던가 언제 사용하면 되겠다에 대한 인사이트가 확 오는 반면에 Optional.of는 언제 사용하면 좋을지에 대한 감이 안오네요.

java 함수형-프로그래밍 lambda optional

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 박철현님.

Optional 클래스는 자바에서 null을 안전하게 처리하기 위한 도구로, Optional.of(), Optional.ofNullable(), Optional.empty()와 같은 다양한 생성자 메서드를 제공합니다.

  1. Optional.of(): 이 메서드는 절대 null 값이 아니라고 확신할 수 있는 상황에서 사용됩니다. 즉, 이 값을 감싸는 과정에서는 null이 될 가능성이 없다는 것을 확실히 알고 있는 경우 사용하시면 됩니다. 만약 null 값을 전달하게 되면, NoSuchElementException이 발생하게 되어 코드의 통제권 밖에 있는 null 값을 조기에 확인할 수 있습니다. 이는 null을 방지하기 위한 유효성 검사가 완료된 후에 사용하기 좋은 메서드죠.

  2. Optional.ofNullable(): 이 메서드는 값을 감싸면서 null 값도 허용하는 경우 사용합니다. 값이 null일 수 있는 상황에서 안전하게 Optional 객체로 감싸주기 위해 널리 사용됩니다. 이를 통해 null을 명시적으로 처리함으로써 NPE를 방지할 수 있습니다.

  3. Optional.empty(): 명시적으로 빈 값을 전달하기 위해 사용하는 메서드입니다. 이 객체는 Optional의 empty 인스턴스를 반환하므로, 빈 상태를 명확히 표현하는 데 사용됩니다.

Optional 활용에 대한 추가 자료로 아래 링크에서 더 많은 정보를 얻으실 수 있습니다:
- Optional 제대로 활용하기

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

db sql vs java stream 비교 궁금증 알려주세요!

1

75

1

파라미터 구분이 안되는지..?

0

70

1

자바 21 버전을 꼭 써야하나요??

0

144

2

9. 스트림 API3-컬렉터 오타?

0

78

2

(추석 챌린지) 복습 정리내용

0

95

1

람다 궁금한 점

0

73

2

스트림과 for문 질문

0

44

1

디폴트 메서드를 사용한 리펙토링

0

52

1

실무에서의 커스텀 Collector 사례 여부

0

65

1

IntelliJ 한글 깨지는 현상 문의

0

202

1

함수형 프로그래밍 적용 범위/원칙

0

61

1

스트림에 대해서 질문(float)은 사용하는지

0

58

1

[자료 패키지 누락] 2.람다 자료에서 문제 패키지명 생략 (25page)

0

60

2

지연 평가

0

68

1

메서드 시그니처

0

102

3

고급편 우선순위

0

130

3

스프링 데이터 JPA 인터페이스에서의 default 메서드 사용

0

113

2

독립적인 스레드 할당 시 스레드 개수는 어떻게 할당해야 할까요?

0

87

1

병렬 프레임 병목 현상 해결책에 대해 궁금한 점

0

103

1

스트림 중복 에러 관련 질문

0

71

1

자바 버전이 31 까지 업데이트 된다면 새로운 자바 강의를 추가 하실 건가요?

0

134

1

임계값과 스레드수를 줄일 경우 교착상태가 발생할수 있는건가요?

0

103

2

변수 합치기에 대해서 질문드립니다!

0

83

2

flatMap 응용 방법에 대해서, 이렇게 하는게 맞는지?

0

129

1