为什么 Collectors.partitioningBy 返回 Object 而不是 Map
Why Collectors.partitioningBy returning Object instead of Map
我根据我的员工 class 的不同属性创建了一组谓词,并使用谓词的默认方法 - and/or 将它们组合成一个谓词,并将这个组合谓词用于Collectors.partitioningBy 方法。
虽然代码在 eclipse 上编译和执行正常,但构建我的项目时出现错误:
不兼容的类型:java.lang.Object 无法转换为 java.util.Map>
Predicate<Employee> addressSectionNull = emp-> emp== null || emp.getAddress() == null;
Predicate<Employee> isBlankLane = emp -> StringUtils.isBlank(emp.getAddress().getLane());
Predicate<Employee> notValidCity = emp -> "NA".equalsIgnoreCase(emp.getAddress().getCity());
Predicate notEligible =
addressSectionNull.or(isBlankLane).or(notValidCity);
Map<Boolean, List<Employee>> empValidityMap =
employees.parallelStream().collect(Collectors.partitioningBy(notEligible));
改变
Predicate notEligible = ...
到
Predicate<Employee> notEligible = ...
原因:Collectors.partitioningBy(T predicate)
将return一个Collector<T, ?, Map<Boolean, List<T>>>
。当您的 Predicate 没有泛型类型时,T 将是 Object
.
我根据我的员工 class 的不同属性创建了一组谓词,并使用谓词的默认方法 - and/or 将它们组合成一个谓词,并将这个组合谓词用于Collectors.partitioningBy 方法。
虽然代码在 eclipse 上编译和执行正常,但构建我的项目时出现错误:
不兼容的类型:java.lang.Object 无法转换为 java.util.Map
Predicate<Employee> addressSectionNull = emp-> emp== null || emp.getAddress() == null;
Predicate<Employee> isBlankLane = emp -> StringUtils.isBlank(emp.getAddress().getLane());
Predicate<Employee> notValidCity = emp -> "NA".equalsIgnoreCase(emp.getAddress().getCity());
Predicate notEligible =
addressSectionNull.or(isBlankLane).or(notValidCity);
Map<Boolean, List<Employee>> empValidityMap =
employees.parallelStream().collect(Collectors.partitioningBy(notEligible));
改变
Predicate notEligible = ...
到
Predicate<Employee> notEligible = ...
原因:Collectors.partitioningBy(T predicate)
将return一个Collector<T, ?, Map<Boolean, List<T>>>
。当您的 Predicate 没有泛型类型时,T 将是 Object
.