ㅇ Optinal 이란?
- 값이 있을 수도, 없을 수도 있는 객체이다.
- 원소를 최대 1개 가질 수 있는 불변 Collection 이다.
- null 에 대한 처리를 안전하게 할 수 있게 해준다.
* Optional 을 리턴하는 메서드에서는 null을 리턴해서는 안된다. ( Optional 취지와 맞지 않기 때문이다. )
ㅇ 왜 Optional 을 사용하는가?
: 검사 예외와 취지가 비슷하다. 즉 반환값이 있을 수도 있고, 없을 수도 있음을 API 사용자에게 명확히 알려준다.
만약 기존 로직처럼 사용하여 비검사 예외를 던지거나 null 을 반환하는 경우
=> 사용자가 그 사실을 인지못해 런타임에서 예상치 못한 장애로 발전할 수 있음
검사 예외 ( checked Exception ) 을 던지는 경우
=> 사용자 코드에서는 try-catch 구문을 통해 예외처리하는 로직을 추가해야하는데,
비슷하게 메서드가 Optional 을 반환한다면 클라이언트는 값을 받지 못했을 때의 취할 행동을 선택해야한다.
ㅇ Optinal 기본값을 설정하는 방법
String lastWord = max(words).orElse("단어 없음..");
: 값을 받지 못했을 때에 단어 없음이라는 행동이 선택된다.
ㅇ Optional 메서드
1) Optional.empty()
- 내부 값이 비어있는 Optional 객체 반환
2) Optional.of(T value)
- 내부 값이 value 인 Optional 객체 반환
- 만약 value가 null인 경우 NPE 발생 ( NullPointerException )
3) Optional.ofNullable(T value)
- 가장 자주 쓰이는 Optional 생성 방법
- value 가 null 이면, empty Optional 을 반환하고 값이 있으면 Optional.of 로 생성한다.
'JAVA' 카테고리의 다른 글
String 중간 공백기준으로 배열 만들기 (0) | 2022.07.06 |
---|---|
Hamcrest, Matcher란? (0) | 2022.07.03 |
상속을 응용한 스택 구현 (0) | 2021.10.07 |
배열 큐 (0) | 2021.10.07 |
Stack (0) | 2021.10.06 |