为什么 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.