Почему следующий код не компилируется.
Consumer con = (s) -> System.out::println;
Это говорит
Целевой тип этого выражения должен быть функциональным интерфейсом.
хотя Consumer является функциональным интерфейсом. Ниже работает просто отлично.
Consumer con2 = (s) -> {System.out.println(s);};