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

Java流调用reversed后出现Cannot resolve method 'get'编译错误的解决

错误原因分析

这是Java泛型类型推断的问题。当你链式调用reversed()时,编译器无法从后续调用中推断出Comparator.comparing()里lambda表达式的参数类型,只能把x默认推断为Object类型——而Object类没有get()方法,因此触发了编译错误。

解决方案

有三种实用的解决方式,按代码简洁度和可读性排序:

方式一:直接指定逆序比较规则

不用先排序再反转,直接在comparing方法中传入逆序比较器,代码更直观:

items.stream()
     .sorted(Comparator.comparing(x -> x.get(0), Comparator.reverseOrder()))
     .collect(Collectors.toList());

方式二:显式指定泛型参数

在comparing方法中明确泛型类型,让编译器直接知道x的类型是List<String>:

items.stream()
     .sorted(Comparator.<List<String>, String>comparing(x -> x.get(0)).reversed())
     .collect(Collectors.toList());

方式三:先定义比较器变量再反转

把比较器单独赋值给带明确类型的变量,确保编译器能正确推断类型后,再调用reversed():

Comparator<List<String>> nameComparator = Comparator.comparing(x -> x.get(0));
List<List<String>> sortedItems = items.stream()
                                     .sorted(nameComparator.reversed())
                                     .collect(Collectors.toList());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:24:21