Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Absolutely correct. Lambdas are just shorthand for anonymous inner classes which implement an interface with only one method -- aka single abstract method (SAM) types.

For instance, you have two functions. One takes `Function<Type, Type>` and the other takes `UnaryOperator<Type>`. Giving the "same" lambda to both functions will result in two anonymous inner types, one implementing both interfaces.



They're not exactly shorthand. They use `invoke_dynamic` under the hood, which defers the creation of the lambda til it is used. Conceptually they are, but in practice they're a little different.


Lambdas are also more aggressively optimized. If possible, the compiler will sometimes turn a lambda into a static method.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: