Why does this Java 8 lambda fail to compile?

Your lambda needs to be congruent with BiConsumer<String, String>. If you refer to JLS #15.27.3 (Type of a Lambda):

A lambda expression is congruent with a function type if all of the following are true:

  • […]
  • If the function type’s result is void, the lambda body is either a statement expression (ยง14.8) or a void-compatible block.

So the lambda must either be a statement expression or a void compatible block:

  • A constructor invocation is a statement expression so it compiles.
  • A string literal isn’t a statement expression and is not void compatible (cf. the examples in 15.27.2) so it does not compile.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)