Java 8 Lambda Expressions: Difference between revisions
Line 15: | Line 15: | ||
The semantics behind the method reference syntax is ''use this method as a value''. | The semantics behind the method reference syntax is ''use this method as a value''. | ||
The <''Class-Name''>::<''method-name''> syntax creates a method reference. | |||
Revision as of 20:51, 22 March 2018
External
- Lambda Expressions Tutorial https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
Internal
Overview
Java 8 introduces functional programming features, in form of lambda expressions. Lambda expressions allow for behavior parameterization. Functions can be now assigned to variables, as values.
Method Reference
The semantics behind the method reference syntax is use this method as a value.
The <Class-Name>::<method-name> syntax creates a method reference.
To Process
A lambda expression can be thought of as an anonymous methods. As shown in the "Syntax" section below, a lambda expression looks a lot like a method declaration.
TODO: one pass yellow/de-yellow over the Oracle tutorial.
Playground Example
Functional Interface
An interface with only one method is named functional interface
Apparently this is the type of a lambda expression, it describe the function signature.
The Type of a Lambda Expression
Elaborate here.
Syntax
A lambda expression consists in a comma-separated list of formal parameters, enclosed in parentheses, followed by the arrow token "->" followed by a body, which may be a single expression or a statement block.
(comma_separated_formal_parameter_list) -> body
Formal Parameters
The type of the parameters may be omitted.
If there is a single parameter, the enclosed parentheses may be omitted.
Body
The body may be a single expression, or a statement block.
Referencing a Lambda Expression
Method References
Example:
public ZipHandler getZipHandler() { return ZipUtil::getTopLevelDirectoryName; }
Variables
The variables used in the lambda expressions must be final.
Statement Lambdas and Expression Lambdas
Statement Lambda:
(ZipEntry e) -> { s.append(e.getName()); }
Expression Lambda:
(ZipEntry e) -> s.append(e.getName())
TODO
- Lambda Expressions Tutorial https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html