|
|||||||||||||||||||
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | | | | |||||||||||||||||||
|
Footnotes
|
||||||||||||||||||
This is a webpage devoted to lambda expressions in Java (a new language
feature) and streams (new abstractions in the JDK's collection framework) - both were added to Java on March 18, 2014 with release 8.
If you want to provide feedback or have any questions regarding lambda expressions in Java feel free to send me
EMAIL
or use the
LAMBDA QUESTION
form.
The Lambda Tutorial is available in PDF format (330KB) and in EPUB format (410KB) . The Lambda Reference (note: it is an incomplete draft version) is available in PDF format (1200KB) .
|
|||||||||||||||||||
[1]
See Wikipedia for examples of the syntax in which these languages express
lambdas:
http://en.wikipedia.org/wiki/Lambda_calculus#Lambda_calculus_and_programming_languages
.
[2]
See the "
Closure Debate" at
http://www.javaworld.com/javaworld/jw-06-2008/jw-06-closures.html
for an overview
.
[4] More precisely, object creation is no longer explicit. Under the hood, a lambda expression is eventually translated into a synthetic class type and an instance thereof. The key difference is that the class definition and instance creation is explicitly done by the programmer, when anonymous inner classes are used, whereas the class definition and instance creation is implicitly done by the runtime system. Details regarding the translation process can be found in the section on "Lambda Translation" in the Lambda Reference document. [5] See the section on "Method References" in the Lambda Reference document. [6] If you are interested in the details of the creation of the lambda object please read the section on "Lambda Translation" in the Lambda Reference document or take a look at http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html . [7] Details regarding functional interfaces can be found in the section on "Functional Interfaces" in the Lambda Reference document. These details include, for instance, that functional interfaces can under certain circumstances have more than one method. Also, there is a @FunctionalInterface annotation that enables compiler checks for interfaces that are supposed to be used as functional interfaces. [8] Expressions that have different type depending on the context in which they appear are called poly expression . The actual type of a poly expression is always inferred by the compiler. Lambda expressions and method references are examples of poly expression. Poly expressions also occur in conjunction with generic; for example instance creation expressions that use a diamond <> like new ArrayList<>() are poly expressions. [9] Details regarding functional interface conversion can be found in the sections on "Target Typing " and "Type Inference " in the Lambda Reference document. There you find details regarding which context is suitable for functional interface conversion and how conversion to generic functional interfaces works. [10] Details regarding the translation of lambda expressions can be found in the sections on "Translation of Lambda Expressions" in the Lambda Reference document. [11] See Mark Reinhold's blog at https://blogs.oracle.com/mr/entry/closures .
[12]
The
iterator pattern is one of the so-called Gang of Four design patterns
[13]
The specification request JSR 335 can be found at
http://openjdk.java.net/projects/lambda/.
CONTENT NEXT INDEX |
|||||||||||||||||||
© Copyright 1995-2013 by Angelika Langer. All Rights Reserved. URL: < http://www.AngelikaLanger.com/Lambdas/LambdaTutorial/lambdatutorial_8.html> last update: 8 May 2013 |