Optional.orElse()와 Optional.orElseGet()의 차이점
Optional 클래스는 orElse() 및 orElseGet()과 같은 메소드를 제공합니다. Optional이 있으면 값을 검색하고, 비어 있으면 기본값을 제공합니다. 그러나 동작에는 미묘한 차이가 있습니다.
orElseGet() 사용 시기
주요 차이점은 orElseGet()은 필요할 때까지 기본값 검색 함수의 실행을 지연하는 반면 orElse()는 항상 함수를 실행한다는 것입니다. 이는 기본값을 얻는 것이 필요한 경우에만 수행하고 싶은 비용이 많이 들거나 시간이 많이 걸리는 작업인 상황에서 중요할 수 있습니다.
예:
다음을 고려하세요. 리소스(Optional로 표시됨)를 찾아 해당 값을 검색하거나 기본값을 제공해야 하는 시나리오입니다. 기본값을 얻으려면 비용이 많이 드는 데이터베이스 쿼리가 필요한 경우 orElseGet()을 사용하여 리소스가 있을 때 쿼리를 피하는 것이 좋습니다.
<code class="java">Optional<Resource> resource = findResource(); Resource result = orElseGet(() -> getExpensiveDefaultValue());</code>
추가 참고 사항:
결론:
orElseGet()은 기본값 실행을 연기하는 방법을 제공합니다. 필요할 때까지 검색 기능을 사용하여 Optional이 비어 있지 않을 때 기본값을 얻는 데 비용이 많이 들거나 바람직하지 않은 경우 성능 최적화를 허용합니다.
위 내용은 언제 Optional.orElse() 대신 Optional.orElseGet()을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!