小编Zef*_*ick的帖子

为什么消费者接受语句体而不是表达体的lambdas?

以下代码令人惊讶地成功编译:

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编译器中的错误还是我不知道的类型推断规则?

java lambda type-inference java-8

61
推荐指数
3
解决办法
4579
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1

type-inference ×1