Для меня «нестатические и статические ссылки» - это далеко не проблема «универсальные типы не совпадают».
ал с примерами изhttp://www.concretepage.com/java/jdk-8/java-8-unaryoperator-binaryoperator-example.
Что меня по-настоящему сбивает с толку, так это то, что когда я ошибочно помещаю неправильный тип в один из обобщений при формировании Collectors, компилятор java выдает мне очень вводящее в заблуждение сообщение:
На нестатический метод нельзя ссылаться из статического контекста
Моя ошибка не имеет ничего общего со статическим контекстом экземпляра в реальности:
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
все возвращается на круги своя.
Может кто-нибудь объяснить причину такого сбивающего с толку сообщения об ошибке? Я уверен, что это хороший, но я не могу понять это.
РЕДАКТИРОВАТЬ:
~$ 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)