使用背景
Java8新增了函数式接口,了可以想JavaScript那样使用箭头表达式(Lamda)来作为方法的参数、返回值或者对象的属性。
java.util.function包下预定义了一些的函数式接口供我们使用:
- Function
- Consumer
- Supplier
- Predicate
项目使用
定义工具类判断条件condition是否为成立,成立则执行传入的方法fun。
public static <T> T casReturn(boolean condition, Function<T, T> fun, T obj){
if(condition){
return fun.apply(obj);
}else {
return obj;
}
}
public static <T> T casVoid(boolean condition, Consumer<T> fun, T obj){
if(condition){
fun.accept(obj);
return obj;
}else {
return obj;
}
}
使用场景
业务中对象属性的修改经常会判断参数是否传值,传值则设置值,不穿则不做操作,举个栗子:更新用户信息,对应姓名,昵称,传值不为空时则更新用户对应信息
CommonUtils.casVoid(Objects.nonNull(userName), user -> user.setUserName(userName), user);
评论区