该行编译
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()
方法的原因。