以下代码令人惊讶地成功编译:
Consumer<String> p = ""::equals;
Run Code Online (Sandbox Code Playgroud)
这个也是:
p = s -> "".equals(s);
Run Code Online (Sandbox Code Playgroud)
但是这会因boolean cannot be converted to void预期错误而失败:
p = s -> true;
Run Code Online (Sandbox Code Playgroud)
使用括号修改第二个示例也会失败:
p = s -> ("".equals(s));
Run Code Online (Sandbox Code Playgroud)
它是Java编译器中的错误还是我不知道的类型推断规则?