Frage

This line compiles

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

But adding a 'thenComparing' does not

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

Compiler error is that it can not resolve getMeta().

(As there don't appear to be any errors in the code I'm assuming the problem is in IntelliJ).

Thanks

War es hilfreich?

Lösung

For a reason I don't understand, type inference fails in the second case. But you can give the type of t

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

In your example, the compiler finds that t is something else that a Trade (probably Object). That's why the method getMeta() cannot be found.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top