为什么消费者接受带有语句体的 lambda,但不接受表达式主体?
令人惊讶的是,以下代码已成功编译:
Consumer<String> p = ""::equals;
这也是:
p = s -> "".equals(s);
但这是失败的,错误如预期:boolean cannot be converted to void
p = s -> true;
修改带括号的第二个示例也失败:
p = s -> ("".equals(s));
这是Java编译器中的错误还是有我不知道的类型推断规则?