如何将Function<int[], Boolean>转换为Function<Integer[], Boolean>
解决方法
你需要做的是类型适配:把传入的Integer[]拆箱转换成int[],再传给原函数执行,这样就能复用原函数的逻辑,同时满足返回类型要求。
简洁实现(Java 8+)
如果可以确定Integer[]中没有null元素,用流转换最简洁:
import java.util.Arrays; import java.util.function.Function; public static Function<Integer[], Boolean> convertFunction(Function<int[], Boolean> f) { return integerArray -> { // 将Integer数组拆箱为int数组 int[] intArray = Arrays.stream(integerArray) .mapToInt(Integer::intValue) .toArray(); // 调用原函数并返回结果 return f.apply(intArray); }; }
兼容空值的实现
如果场景中可能出现null数组或null元素,手动循环转换并加入空值处理逻辑:
import java.util.function.Function; public static Function<Integer[], Boolean> convertFunction(Function<int[], Boolean> f) { return integerArray -> { if (integerArray == null) { return f.apply(null); // 遵循原函数的null处理逻辑,也可自定义规则 } int[] intArray = new int[integerArray.length]; for (int i = 0; i < integerArray.length; i++) { // 示例:null元素转为0,也可选择抛异常或其他处理方式 intArray[i] = integerArray[i] != null ? integerArray[i] : 0; } return f.apply(intArray); }; }
关键说明
- 核心是用新的
Function包装原函数,在apply方法中完成装箱类型数组到基本类型数组的转换,完全复用原函数的业务逻辑。 - 流转换方式代码更简洁,但遇到
null元素会直接抛出NullPointerException,适合输入确定非空的场景。 - 手动循环方式可以灵活处理空值,适配更复杂的输入情况。
内容的提问来源于stack exchange,提问作者Lenz
相关产品推荐
相关产品推荐

