Я играл с примерами из http://www.concretepage.com/java/jdk-8/java-8-unaryoperator-binaryoperator-example.
То, что я нахожу очень запутанным, состоит в том, что когда я ошибочно вводил неправильный тип в один из дженериков при создании Collectors, java-компилятор дает мне очень вводящее в заблуждение сообщение:
Нестатический метод не может ссылаться на статический контекст
Моя ошибка не имеет никакого отношения к статическому контексту vs instance:
Map<String, Map<Integer, Integer>> mapOfStudents = list.stream().collect(Collectors.groupingBy(Student::getClassName,
Collectors.toMap(Student::getName, Student::getAge)));
Моя ошибка в типичном обратном типе. Когда я исправлю его и поставлю:
Map<String, Map<String, Integer>> mapOfStudents
все возвращается к нормальному.
Может кто-нибудь объяснить причину такого запутанного сообщения об ошибке? Я уверен, что он хороший, но я не понимаю его.
EDIT:
~$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)