You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Comparator.thenComparing提示参数Comparator<DTO>不适用报错求助

问题根因

第一个Comparator.comparing传入的lambda参数未声明显式类型,Java编译器无法自动推断出参数为CognodataEstadoSolicitudesDTO类型,导致第一个比较器被错误推断为Comparator<Object>,泛型不匹配导致thenComparing传入指定类型的比较器时报错。

解决方案

给lambda参数加上显式的类型声明即可修复问题,修正后代码如下:

List<CognodataEstadoSolicitudesDTO> solicitudes;
// 其他逻辑省略
else if ("columnaFechaSolicitud".equals(orderBy)) {
    solicitudes = solicitudes.stream().sorted(Comparator.comparing((CognodataEstadoSolicitudesDTO t) -> {
        Date fecha = null;
        try {
            fecha = t.getFechaSolicitudToDate();
        } catch (ParseException e) {
            LOG.error(e.getMessage());
        }
        return fecha;
    }).thenComparing(Comparator.comparing(CognodataEstadoSolicitudesDTO::getIdSolicitud))).collect(Collectors.toList());
}

优化建议

如果getFechaSolicitudToDate()解析异常会返回null,直接排序可能触发空指针异常,建议在构造第一个比较器时补充空值处理逻辑:

Comparator.comparing((CognodataEstadoSolicitudesDTO t) -> {
    // 原有逻辑不变
}, Comparator.nullsFirst(Date::compareTo))

内容的提问来源于stack exchange,提问作者okjfokjrf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:36:03