[Java] Optional이란?

2023. 5. 30. 23:48·노빠꾸 개발일지/JAVA
목차
  1. Optional ?
  2. Optional 객체 생성 방법
  3. Optional 사용 주의사항
반응형

Optional ?

  • 자바8에서는 java.util.Optional<T>라는 새로운 클래스를 제공하여 값이 있거나 없음을 표현할 수 있다.
  • Optional은 선택형 값을 캡슐화하는 클래스이다.
  • Optional로 값이 없는 상황을 적절하게 처리하도록 강제할 수 있다. 즉, 예상치 못한 null예외를 방지할 수 있다.
  • 값이 있으면 Optional클래스는 값을 감싼다. 반면 값이 없으면 Optional.empty 메서드로 Optional을 반환한다.
  • Optional.empty()는 Optional의 특별한 싱글턴 인스턴스를 반환하는 정적 팩토리 메서드이다.

 

 

Optional 객체 생성 방법

1. 빈 Optional


      
Optional<UserDto> userDto = Optional.empty();

 

2. null을 포함하지 않는 Optional


      
Optional<UserDto> userDto = Optional.of(userDto);

이 경우에는 userDto값이 null일 경우 NullPointException이 발생한다.

 

3. null을 포함하는 Optional


      
Optional<UserDto> userDto = Optional.ofNullable(userDto);

이 경우에는 userDto가 null일 경우에도 NullPointException이 발생하지 않고, 빈 Optional객체가 반환된다.

 

 

 

Optional 사용 주의사항

1. Optional에 컬렉션객체를 사용하지 않는다.

컬렉션객체에 이미 null체크 메서드를 포함하고 있으므로, Optional 사용하지 않는 것이 좋다.

 

2. 파라미터로 사용하지 않는다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'노빠꾸 개발일지 > JAVA' 카테고리의 다른 글

[Intelij] 멀티모듈 프로젝트 구성해보기  (0) 2025.01.02
[Intelij] 인텔리제이 기본 초기 세팅 정리(메뉴 글자 크기, 소스코드 폰트크기 등등)  (1) 2024.01.01
정적 팩토리 메서드란?  (0) 2023.05.29
[JAVA] 정적팩토리메서드(Static Factory Method)란?  (0) 2022.11.13
부트스트랩 정리 및 참고할 만한 부트스트랩 추천 사이트  (0) 2022.09.18
  1. Optional ?
  2. Optional 객체 생성 방법
  3. Optional 사용 주의사항
'노빠꾸 개발일지/JAVA' 카테고리의 다른 글
  • [Intelij] 멀티모듈 프로젝트 구성해보기
  • [Intelij] 인텔리제이 기본 초기 세팅 정리(메뉴 글자 크기, 소스코드 폰트크기 등등)
  • 정적 팩토리 메서드란?
  • [JAVA] 정적팩토리메서드(Static Factory Method)란?
No Backing
No Backing
노빠꾸
    300x250
  • No Backing
    누릇한 노빠꾸 블로그
    No Backing
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 노빠꾸 서버 (20)
        • AWS (0)
        • 설치관련 (7)
        • 명령어 정리 (2)
        • 서버 설정 (8)
        • Nginx (2)
      • 노빠꾸 개발일지 (70)
        • JAVA (16)
        • JQUERY & JAVASCRIPT (10)
        • HTML5 (0)
        • SPRING (16)
        • Design Patterns (1)
        • DAUM API (1)
        • GIT (10)
        • Python (1)
        • SPRING SECURITY (1)
        • Vue (3)
      • 노빠꾸 데이터베이스 (9)
        • SQL (1)
        • ORACLE (3)
        • MySql (5)
      • 노빠꾸 일상 (13)
      • 노빠꾸 책 추천 (4)
      • 노빠꾸 경제 (20)
      • 노빠꾸 맥북 사용기 (7)
      • 노빠꾸 정보처리기사 정리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    사이트맵
    스프링 시큐리티 5.7 버전이후 변경사항
    스프링부트 프로젝트
    주식용어
    맥북 단축키
    WebSecurityConfigurerAdapter Deprecated
    개인서버 추천
    스프링시큐리티 websecurityconfigureradapter
    websecurityconfigureradapter란
    깃허브 코파일럿
    맥북 사용 팁
    MySQL 사용자 계정 생성
    티스토리 사이트맵 등록
    스프링부트란
    금융용어
    websecurityconfigureradapter 사용법
    스프링부트
    Linode
    리노드
    Spring boot
    경제용어
    MySQL 데이터베이스 생성
    스프링부트 JPA
    리눅스 자바 설치
    인텔리제이
    우분투 자바 설치
    JPA 쿼리 메소드
    WebSecurityConfigurerAdapter
    websecurityconfigureradapter 빈 등록
    websecurityconfigureradapter 변경사항
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
No Backing
[Java] Optional이란?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.