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 |