Java v17 Docs - Optional
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html
Optional (Java SE 17 & JDK 17)
Type Parameters: T - the type of value public final class Optional extends Object A container object which may or may not contain a non-null value. If a value is present, isPresent() returns true. If no value is present, the object is considered empty and
docs.oracle.com
Optional
Optional은 Java8에서 도입된 클래스로, 값의 존재 여부를 나타내는 컨테이너 객체이다. 이 클래스는 주로 값이 존재하지 않을 수 있는 상황에서 NullPointerException 을 방지하고자 할 때 사용된다.
값이 존재 여부 표현
Optional 은 값이 존재할 수도 있고, 존재하지 않을 수도 있는 상황을 다룬다
Null 대신 사용
기존에는 메서드가 null을 반환하는 경우, 이로 인해 NullPointerException이 발생할 수 있었다. Optional을 사용하면 이를 방지하고 null을 직접 다루지 않아도 된다.
메서드 체이닝
Optional 은 메서드 체이닝을 지원하며, 여러 메서드를 연속적으로 호출하여 안전하게 값에 접근하고 변환할 수 있다.
메서드
- of(T value): 주어진 값을 가지는 Optional 객체를 생성합니다. 이 때, 값이 null이 아니어야 합니다.
- ofNullable(T value): 주어진 값이 null이 아닌 경우 해당 값을 가지는 Optional 객체를 생성합니다. 값이 null인 경우 빈 Optional을 반환합니다.
- empty(): 빈 Optional 객체를 반환합니다.
- isPresent(): 값이 존재하는지 여부를 확인합니다. 값이 존재하면 true, 그렇지 않으면 false를 반환합니다.
- ifPresent(Consumer<? super T> consumer): 값이 존재하는 경우에만 주어진 동작(Consumer)을 수행합니다.
- orElse(T other): 값이 존재하지 않는 경우에 대체 값을 반환합니다.
- orElseGet(Supplier<? extends T> other): 값이 존재하지 않는 경우, 값을 생성하는 Supplier를 통해 값을 얻습니다.
- orElseThrow(Supplier<? extends X> exceptionSupplier): 값이 존재하지 않는 경우, 예외를 던집니다.
예시
Optional<String> optionalString = Optional.of("Hello");
// 값이 존재하는지 확인
if (optionalString.isPresent()) {
System.out.println("값이 있습니다: " + optionalString.get());
}
// 값이 존재할 경우 동작 수행
optionalString.ifPresent(value -> System.out.println("값: " + value));
// 값이 존재하지 않는 경우 대체 값을 반환
String result = optionalString.orElse("기본값");
// 값이 존재하지 않는 경우 예외 던지기
String value = optionalString.orElseThrow(() -> new IllegalArgumentException("값이 없습니다"));
'Java' 카테고리의 다른 글
[Java] LinkedHashMap (0) | 2023.12.24 |
---|---|
[Java] Map 자세히 알아보기 (0) | 2023.11.16 |
[Java] 배열(Array) vs 리스트(List) 차이. (0) | 2023.11.09 |