반응형
Optional이란?
<T>타입의 래퍼클래스
- <T>를 사용하기 때문에 모든 종류의 객체를 넣을 수 있다.
- null을 다루는 것은 NullPointerException의 위험이 있는데, Optional을 통해 null을 간접적으로 안전하게 다룰 수 있다.
- null을 Oprtional에 담아 사용하면, null이더라도 Optional객체를 반환하기에 예외발생의 위험이 사라진다.
생성하기
Optional.of(객체);
💡 null이 담긴 Optional을 만들 경우
Optional.empty()
Optional.ofNullable(null 혹은 null값인 참조객체)
로 만든다.
❗Optional.of(null)로 생성시 NullPointerException이 발생하므로 비권장.
값 가져오기
get() orElse() orElseGet() orElseThrow()
- get()
- null일 경우 예외발생.
- null일 경우 예외발생.
- orElse(null일 경우 반환할 거)
- null일 경우 반환값 지정 가능.
- null일 경우 반환값 지정 가능.
- orElseGet(람다식or메서드참조)
- 람다식 or 메서드참조 사용가능.
- orElseThrow(예외종류)
- null일 경우 예외 종류 지정가능.
- null일 경우 예외 종류 지정가능.
🌟 orElse()와 orElseGet()이 가장 많이 사용된다.
이 두 메서드의 차이는 orElseGet()은 람다식과 메서드참조를 사용한다는 점만 다르다.
isPresent()
: null이면 false, 아니면 true 반환.
ifPresent(람다식or메서드참조)
: null이 아닐 때만 작업 수행.
OptionalInt
OptionalLong
OptionalDouble
: 미리 타입이 지정되 Optional.
성능이 좀 더 좋다.
Stream에서 사용하는 map() filter() 등을 가지고 있다.
※ Stream의 연산 메서드들
2024.12.16 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Stream]중간 연산-map() peek() flatMap()
반응형
'☕ JAVA > ☕ Class & Method' 카테고리의 다른 글
[JAVA][Stream]collect()와 Collectors (0) | 2024.12.18 |
---|---|
[JAVA][Stream]최종 연산 (0) | 2024.12.17 |
[JAVA][Stream]중간 연산-map() peek() flatMap() (1) | 2024.12.16 |
[JAVA][Stream]중간 연산-filter() distinct() skip() limit() sorted() (0) | 2024.12.16 |
[JAVA][Stream]스트림 생성 (1) | 2024.12.13 |