728x90
Optional 의 orElse, orElseGet 차이점에 대해서 알아보자
728x90
Optional은 자바 8부터 도입된 클래스로, 값이 있을 수도 있고 없을 수도 있는 상황을 처리하는 데 사용된다.
Optional은 값이 있는지 없는지를 명시적으로 표현함으로써 NullPointerException을 방지하고, 코드의 가독성을 높여준다.
orElseGet와 orElse는 Optional 객체에서 값을 가져오는 메서드 중 두 가지이다.
1. orElseGet
값이 존재하지 않을 경우에만 실행되는 함수를 인수로 받는다. 값이 존재하지 않을 때마다 이 함수가 호출되며, 이 함수의 반환값이 Optional의 값이 된다. 이 함수는 Supplier를 매개변수로 받아야 하므로 지연 로딩(lazy loading)에 적합하다. 즉, 값이 필요한 시점에만 계산된다.
Optional<String> optional = Optional.empty();
String result = optional.orElseGet(() -> "Value is absent");
2. orElse
값이 존재하지 않을 경우에 반환할 기본값을 인수로 받는다. 값이 존재하지 않을 때는 이 기본값이 반환된다. 이 메서드는 값을 가져오는 시점에 상관 없이 기본값을 바로 반환한다.
Optional<String> optional = Optional.empty();
String result = optional.orElse("Value is absent");
따라서,
orElseGet은 값이 필요한 시점에 함수를 실행하고,
orElse는 값이 존재하지 않을 때 기본값을 반환하는 것으로 요약할 수 있다.
728x90
'개발 > Java & Kotlin' 카테고리의 다른 글
[Spring] Expo FCM 푸시알림 구현하기 (3) (145) | 2024.06.12 |
---|---|
[Spring] AbstractAuthenticationProcessingFilter, OncePerRequestFilter 차이 (159) | 2024.06.06 |
[Spring] 정적파일 캐시에 담기 (158) | 2024.04.12 |
[Spring] addAttribute, addFlashAttribute 차이 (95) | 2024.03.13 |
[Java] DTO, DAO, VO 차이 알아보기 (79) | 2023.10.10 |