Optional orElse(), orElseGet() 차이점

2025. 4. 6. 17:28·JAVA

Optional 클래스에서 or Else() 와 orElseGet()은 값이 없는 경우 대체값을 제공하기 위해 사용된다.

 

기본 개념 : Optional에서 대체값 제공

 

(1) Optional이란?

  • NullPointerException을 방지하기 위해 값을 포장하여 처리하는 객체입니다.
  • Optional을 사용하면 값이 존재할 때와 없을 때를 명시적으로 처리할 수 있다.

(2) orElse()와 orElseGet()의 차이

orElse 사용 예제

public class Main {
    public static void main(String[] args) {
        Optional<Integer> somethingOptional = Optional.ofNullable(null);

        Integer result = somethingOptional.orElse(performanceHeavy());
        System.out.println("Result: " + result);
    }

    public static Integer performanceHeavy() {
        System.out.println("Heavy computation executed");
        return 42;
    }
}

결과 :

null을 집어넣든 , Integer를 집어넣든 Heavy한 작업이 똑같이 실행된다.

 

orElseGet() 사용

public class Main {
    public static void main(String[] args) {
        Optional<Integer> somethingOptional = Optional.ofNullable(null);

        Integer result2 = somethingOptional.orElseGet(() -> performanceHeavy());
        System.out.println("Result: " + result2);
    }

    public static Integer performanceHeavy() {
        System.out.println("Heavy computation executed");
        return 42;
    }
}

 

orElseGet()의 동작 방식은

1. Supplier 함수로 대체값을 제공한다. 따라서 값이 없을 때만 실행된다.

지연 로딩 방식으로, 필요할 때만 함수를 호출하여 성능 저하를 방지한다.

 

 

'JAVA' 카테고리의 다른 글

중첩클래스 활용  (0) 2025.05.07
날짜와 시간  (0) 2025.05.07
SOLID 원칙  (0) 2025.04.15
Stream 활용해서 이중 for문 간단하게 만들기  (0) 2025.04.05
자바 동작원리 정리해보기  (0) 2025.02.28
'JAVA' 카테고리의 다른 글
  • 날짜와 시간
  • SOLID 원칙
  • Stream 활용해서 이중 for문 간단하게 만들기
  • 자바 동작원리 정리해보기
Ark B
Ark B
  • Ark B
    기록
    Ark B
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • 개인 프로젝트 정리 (1)
      • JAVA (9)
      • CS (7)
      • 프로젝트 정리 (6)
        • 인턴 (5)
        • 졸업프로젝트 (0)
      • 코딩테스트 (1)
      • 클린 코드 (3)
      • 책 정리 (1)
        • Effective Java (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Ark B
Optional orElse(), orElseGet() 차이점
상단으로

티스토리툴바