[WHY]
- Optional을 사용한다고 무조건 득이 되는 것이 아니기 때문이다.
- Collection, Stream, 배열, Optional 같은 컨테이너 타입은 Optional을 사용할 필요가 없다.
- Wrapper 클래스에 Optional을 적용하는 것 보다 Primitive 타입을 Optional에서 사용하도록 구현한 OptionalInt와 같은 클래스를 사용하는 것이 좋기 때문
- null을 박싱한 Optinal을 사용하면 안되기 때문
[WHEN]
- 결과가 없을 수 있으며, 클라이언트가 이 상황을 특별하게 처리해야 하는 경우
- 사용자에게 반환 값의 여부를 확인해야 한다는 것을 명시하는 상황
[HOW]
Optional 의 메서드를 활용하자.
get() | 값을 조회한다. |
orElse() | 값을 조회한다. 없다면 기본값을 반환한다. |
orElseThrow() | 값을 조회한다. 없다면 예외 발생시킨다. |
orElseGet() | 값을 조회한다. 없다면 supplier을 통해서 값을 생성 반환한다. |
filter() | 필터링한다 |
map() | 값을 변환한다. 컬렉션의 map의 기능을 상상 |
flatMap() | 값을 변환한다. 컬렉션의 flatMap의 기능을 상상 |
ifPresent() | 값의 존재 여부를 확인한다. |
더 자세한 사용법은 다음 블로그 글을 참조하는 것이 좋겠다.
'programming > java' 카테고리의 다른 글
Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2023.03.23 |
---|---|
Item4. 인스턴스화를 막으려거든 pricate 생성자를 사용하라 (0) | 2023.03.23 |
Item 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 (0) | 2023.03.17 |
Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2023.03.16 |
Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2023.03.13 |