该行编译

List<Trade> trades = otrades.stream()
                     .sorted(Comparator.comparing(t -> t.getMeta().getTradeDate()))
                     .collect(Collectors.toList()));

但是添加“thenComparing”并不会
List<Trade>trades = otrades.stream()
                   .sorted(Comparator.comparing(t -> t.getMeta().getTradeDate())
                   .thenComparing(t -> t.getName()))
                   .collect(Collectors.toList()));

编译器错误是它无法解析getMeta()。

(由于我假设问题出在IntelliJ中,因此在代码中似乎没有任何错误)。

谢谢

最佳答案

由于我不明白的原因,第二种情况下类型推断失败。但是你可以给出t的类型

List<Trade>trades = otrades.stream()//*******
   .sorted(Comparator.comparing(     (Trade t) -> t.getMeta().getTradeDate())
   .thenComparing(t -> t.getName()))
   .collect(Collectors.toList()));

在您的示例中,编译器发现t不同于Trade(可能是Object)。这就是为什么找不到getMeta()方法的原因。

07-25 21:30