🍀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