I try to write following code:
Map<String, String> m = new HashMap<>();
// ... populate the map
m.entrySet().stream()
      .sorted(Comparator.comparing(e -> e.getKey()).reversed())
      .forEach(System.out::println);
This does not compile, because the inferred type for e is Object. However, if I remove the .reversed() call, the inference works. I have to spell out the type for e, which is ugly:
      .sorted(Comparator.comparing((Map.Entry<String, String> e) -> e.getKey()).reversed())
Compiler can infer the type for Comparator.comparing, but when I add reversed(), it cannot. Why?
 
     
     
    