Следующий код на удивление успешно компилируется:
Consumer<String> p = ""::equals;
Это тоже:
p = s -> "".equals(s);
Но это ошибка с ошибкой boolean cannot be converted to void
, как ожидалось:
p = s -> true;
Модификация второго примера с круглыми скобками также не выполняется:
p = s -> ("".equals(s));
Является ли это ошибкой в компиляторе Java или существует ли правило вывода типа, о котором я не знаю?