文章

🍀JavaSE:常用函数式接口

Consumer

在Java中,Consumer是一个函数式接口,它属于java.util.function包。Consumer接口接受一个输入参数并对其执行某些操作,但不返回任何结果。它主要用于传递行为,即将某些操作传递给方法执行。

String error = validateAndSetParameter("车载储能总量", vehicleExcelVo.getTotalEnergyStorage(), 1, 5000, vehiclePageVo::setTotalEnergyStorage);

private String validateAndSetParameter(String parameterName, Integer parameterValue, int minValue, int maxValue, Consumer<String> setter) {  
    if (Objects.nonNull(parameterValue)) {  
        if (parameterValue < minValue || parameterValue > maxValue) {  
            return parameterName + "参数非法";  
        }  
        setter.accept(String.valueOf(parameterValue));  
    } else {  
        setter.accept("");  
    }  
    return null;  
}

在上述代码中,Consumer<String> 的作用是作为一个参数传递给通用参数验证方法,用于在验证参数值后设置相应的属性值;

Consumer<String>用于设置vehiclePageVo的属性值

vehiclePageVo::setTotalEnergyStorage

这意味着我们传递了一个接受String参数并调用vehiclePageVo.setTotalEnergyStorage方法的行为。

通过这种方式,可以在通用方法中灵活地设置不同的属性,而不需要在每个属性的逻辑中重复代码。

Function

在Java中,和Function都是函数式接口,用于表示接受一个参数并返回一个结果的函数。它位于java.util.function包中,IntFunction接口接受一个int类型的输入参数并返回一个结果。这个接口的主要作用是将基本类型int和泛型返回类型结合在一起,避免了自动装箱和拆箱的开销。

示例:

addStatus(statusJoiner, split[1], value -> "电量" + value + "%");  
addStatus(statusJoiner, split[2], NewEnergyRunModeEnum::getNameById);

private static void addStatus(StringJoiner joiner, String value, IntFunction<String> mapper) {  
    if (isNotBlank(value)) {  
        String apply = mapper.apply(Integer.parseInt(value));  
        if (isNotBlank(apply)) {  
            joiner.add(apply);  
        }  
    }  
}

上述代码的作用是将状态信息添加到一个 StringJoiner 对象中,以构建一个包含这些状态信息的字符串

License:  CC BY 4.0