I realise that the Java 8 lambda implementation is subject to change, but in lambda build b39, I\'ve found that braces can only be omitted when the lambda expression returns
You may omit the braces when the lambda body is a single expression or a void method invocation. Every expression evaluates to a value, and thus cannot be void.
If the body of the lambda is a block of statements (e.g. a series of calculations followed by a return statement), or the lambda has no value (i.e. has a void return type) and is not a single void method invocation, you must use the block form, which requires brackets.
In a block-style lambda, if a value is returned, then all possible code paths must either return a value or throw a Throwable.