我不太明白的是为什么 java 编译器允许 lambda 表达式,例如s -> s.isEmpty()
在消费者接口内部。
我尝试过像s -> s.isEmpty()
Consumer 接口那样的 lambda 表达式,它可以正常工作。其他一些 lambda 表达式不起作用,因为它们返回一些内容,例如s -> s
.
Consumer<String> cons1 = s -> s.isEmpty(); cons1.accept("abc");
编译并执行没有问题。
所以我遇到的问题是,我认为 lambda 表达式总是s -> s.isEmpty()
等价于s -> {return s.isEmpty()};
,所以我期望编译器给我一个错误,因为你不能boolean
从消费者接口返回 a (或任何其他类型)。isEmpty()
显然,如果没有 return 语句,并且该方法只是被调用而没有实际返回值,则编译器会将 lambda 表达式转换为方法。那么问题是 return 何时添加到 lambda 表达式的主体中?这样我就可以知道编译器何时会给出编译器错误以及原因。
非常感谢你,如果我没有很好地解释自己,我很抱歉,我是新来的。
汪汪一只猫
小唯快跑啊
相关分类