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.