티스토리 뷰

728x90

orElseorElseGet의 차이점은 기본값을 제공하는 방식과 시점에 있다.

orElse

  • 방식: 기본값을 직접 인자로 받습니다.
  • 특징: orElseOptional이 비어있지 않더라도 기본값을 항상 생성합니다. 이는 기본값 생성이 비용이 많이 드는 경우 비효율적일 수 있습니다.
T orElse(T other)

예시:

String result = Optional.ofNullable(someValue)
                        .orElse(createDefaultValue()); // createDefaultValue()가 항상 호출됨

orElseGet

  • 방식: 기본값을 생성하는 Supplier를 받습니다.
  • 특징: orElseGetOptional이 비어있을 때만 Supplier를 실행하여 기본값을 생성합니다. 따라서 기본값 생성이 비용이 많이 드는 경우에 더 효율적입니다.
T orElseGet(Supplier<? extends T> other)

예시:

String result = Optional.ofNullable(someValue)
                        .orElseGet(() -> createDefaultValue()); // createDefaultValue()는 필요할 때만 호출됨

요약

  • orElse는 기본값을 항상 평가하고 생성합니다.
  • orElseGetOptional이 비어있을 때만 기본값을 생성합니다.

사용 예시 비교

  • orElse 예시:
String defaultValue = "Default";
String value = Optional.ofNullable(someString).orElse(defaultValue);
  • orElseGet 예시:
String value = Optional.ofNullable(someString).orElseGet(() -> "Default");

orElse는 항상 defaultValue를 평가하지만, orElseGetOptional이 비어있을 때만 람다 표현식을 평가합니다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함