카테고리 없음

220831 자바 Supplier And OrElseGet()

하얀잔디 2022. 8. 31. 17:21

코드를 보다가 

 

.orElse 와

 

.orElseGet의 차이가 궁금해졌다.

 

 

그런 결과 orElseGet은 Supplier을 인자로 받는다고한다..

 

 

대체 supplier은 또 뭐야??

 

참고 : https://m.blog.naver.com/zzang9ha/222087025042

 

[Java/자바] - Supplier<T> interface

Supplier<T> interface 안녕하세요, 이번시간에 알아볼 함수형 인터페이스는 Supplier<T>...

blog.naver.com

 

 

간략히 요약하자면 ,

Supplier<T>

T get();

 

- T를 리턴합니다.

 

?? 왜쓰는거지? -> lazy Evaluation 을 통해 사용하지 않아도 되는 함수를 건너뛸수 있다.

 

예시:

 

기존에는 number의 값에 상관없이 getVeryExpensive 함수가 호출이 되기에 9초가 걸리지만, 

Supplier 객체를 사용하면 3초면 충분합니다!! 필요치않은건 돌지 않기 때문.

 

 

 

그럼 orElse와 orElseGet의 차이는 뭐냐??

 

 

orElse : null 이 아니어도 항상 불림.

orElseGet : null 일 때만 불림.

 

참고 : https://cfdf.tistory.com/34

 

java, optional의 orElse와 orElseGet의 차이

java8의 optional api 많이들 사용하실텐데요. 어찌보면 당연하지만 햇갈리는 내용에 대해 다뤄보겠습니다. 마무리 연산인 orElse와 orElseGet의 차이입니다. 귀찮으신분들을 위해 요약을 먼저 하자면 orE

cfdf.tistory.com