The default method syntax will change¹ from
public void method() default { foo(); }
to
public default void method() { foo(); }
I haven't found any reasonable rationale for it on the mailing list (or
elsewhere).
I wonder why they changed it to be inconsistent with Java's existing
defaultvalue syntax.
They also changed around the type parameter order to "align better with EG
discussions"²:
So basically having a functional interface like Mapper<A,B> will now mean
"it maps to A from B" and not "it maps from A to B" anymore.
A reasonable explanation would be that it follows the order of methods
definitions. But on the other hand, that would be inconsistent with both
the definition of lambdas itself (A -> B) as well inconsistent with the
flow of chained operations like list.map(...).filter(...) ...
Ideas/opinions?
Just NIH? Or some evil master plan to ship with requested features, but
prevent widespread usage by making them worse than necessary (Optional
comes to mind...)? Just joking. :-)
¹
http://mail.openjdk.java.net/pipermail/lambda-dev/2012-November/006482.html
²
http://mail.openjdk.java.net/pipermail/lambda-dev/2012-November/006461.html
further discussion in
http://mail.openjdk.java.net/pipermail/lambda-libs-spec-experts/2012-November/000314.html
--
You received this message because you are subscribed to the Google Groups "Java
Posse" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/javaposse/-/0TIctYYriksJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en.