In most cases, a method reference on a variable
var::foo
is equivalent to a lambda expression
(params)->var.foo(params)
However, that is not always the case.
## Effective Final
In the lambda expression, `var` is required to be effectively final; but there's no such requirement on `var::foo`.
see also
http://stackoverflow.com/q/33052917/2158288## null
If `var` is null, `var::foo` immediately causes NullPointerExpression. The lambda expression will not; NullPointerExpression is only thrown when the lambda body is invoked.
## static
This is a little silly; but if `foo` is static, `var.foo(params)` is allowed, and `var::foo` is no allowed.
##
I'm sure there's more...
Zhong Yu
bayou.io