노빠꾸 개발일지/JAVA

[Java] Optional이란?

No Backing 2023. 5. 30. 23:48
반응형

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. 파라미터로 사용하지 않는다.

 

 

 

반응형