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 javaposse@googlegroups.com.
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to