뭐 정확히는 콜백이 아니라고 하는데, 콜백처럼 사용이 된다.
.get()하면 실행된다.
이름처럼 뭔가 공급자, 직접적인 값이 아니라 값을 공급해주는 공급자.
콜백을 인자로 받을 수 있게 해 준다.
Supplier<콜백의반환타입>
private BooleanBuilder nullSafeBuilder(Supplier<BooleanExpression> f){
try {
return new BooleanBuilder(f.get());
}catch (IllegalArgumentException e){
return new BooleanBuilder();
}
}
이렇게 콜백의 실행 타이밍을 늦출 수 있다!
f.get()하면 실행 된다.
private BooleanBuilder ageGoe(Integer ageGoe){
return nullSafeBuilder(()->{return member.age.goe(ageGoe);});
}
private BooleanBuilder ageLoe(Integer ageLoe){
return nullSafeBuilder(() -> member.age.loe(ageLoe));
}
참고로 이 예시는 불완전한 점이 있다.
https://qwefdg3.tistory.com/942
이걸 참고해라.
eq는 괜찮지만, like 등은 안된다.