Java Optional

Socra·2025년 1월 24일
0
post-thumbnail

Java8 ~

Optional (Java SE 10 & JDK 10 )

null을 포함할 수도, null이 아닌 값을 포함할 수도 있는 컨테이너 객체

  • 값이 존재하면 isPresent() → true, 값이 존재하지 않으면 isPresent() → false 를 반환한다.
  • orElse(): 값이 없으면 기본값을 반환한다.
  • ifPresent(): 값이 있으면 동작을 수행한다.
  • Value-based Class (래퍼 클래스)이므로 인스턴스에서

Optional은 주로 메서드의 반환으로 사용하기 위한 것으로, “결과 없음”을 명확하게 나타낼 필요가 있고 null을 사용하면 오류가 발생할 가능성이 있는 경우 사용한다.

→ 메서드 파라미터로 사용 X : 가독성 저하, Optional이 null인지 검사해야 함

→ 멤버로 사용 X : Serializeable 구현되지 않음 (바이트스트림으로 변환 / 저장 불가능)

Optional 타입 자체가 null이 되어선 안된다. 항상 Optional 인스턴스를 가리켜야 한다.

Optional<Object> = null // X

Optional 클래스 주요 메서드

static Optionalempty()비어 있는 Optional 인스턴스를 반환한다.
static Optionalof(T value)null이 아닌 값을 포함하는 Optional을 반환한다.
static OptionalofNullable(T value)지정된 값이 null이 아니면 해당 값을 포함하는 Optional을, null이면 비어 있는 Optional을 반환한다.
Tget()값이 존재하면 해당 값을 반환하고, 없으면 NoSuchElementException을 발생시킨다.
booleanisPresent()값이 존재하면 true, 없으면 false를 반환한다.
voidifPresent(Consumer<? super T> consumer)값이 존재하면 주어진 동작을 수행하고, 없으면 아무 작업도 하지 않는다.
Optionalfilter(Predicate<? super T> predicate)값이 존재하고 주어진 조건을 만족하면 그 값을 포함하는 Optional을 반환하고, 그렇지 않으면 비어 있는 Optional을 반환한다.
Optionalmap(Function<? super T,? extends U> mapper)값이 존재하면 주어진 함수 적용 결과를 포함하는 Optional을 반환하고, 없으면 비어 있는 Optional을 반환한다.
OptionalflatMap(Function<? super T,Optional> mapper)값이 존재하면 주어진 함수 적용 결과(Optional)를 반환하고, 없으면 비어 있는 ptional을 반환한다.
TorElse(T other)값이 존재하면 그 값을 반환하고, 없으면 주어진 기본값을 반환한다.
TorElseGet(Supplier<? extends T> other)값이 존재하면 그 값을 반환하고, 없으면 주어진 공급자를 통해 생성된 값을 반환한다.
TorElseThrow(Supplier<? extends X> exceptionSupplier)값이 존재하면 그 값을 반환하고, 없으면 주어진 예외를 발생시킨다.
booleanequals(Object obj)다른 객체와 이 Optional이 "같은지"를 확인한다. (Optional 끼리의 내부 값 비교)
inthashCode()값이 존재하면 그 값의 해시 코드를 반환하고, 없으면 0을 반환한다.
StringtoString()Optional의 문자열 표현을 반환한다.

Optional 관련 도움되는 포스팅

OrElse / OrElseGet

두 메서드 중 언제 어떤 메서드를 사용해야 할지

[Java] Optional이란? Optional 개념 및 사용법 - (1/2)

Optional 주의사항 + Stream 처럼 사용하기

이렇게 사용하지 말자 / 이렇게 사용하자 / 이렇게도 사용할 수 있다

Optional 제대로 활용하기 - Increment

0개의 댓글

관련 채용 정보