This is an attempt at helping to gather suggestions and feedback for the library changes that accompany project lambda.
Library plans for Java SE 8 fall into three groups:
The streams framework. This is the centerpiece, allowing for
lazy/parallel bulk operations on collections, arrays, and other
Point lambdafication. This is the process of adding simple new
class and interface methods that do something useful with lambdas.
Some examples include:
Comparators.comparing(IntMapper) // comparing(Person::getHeight)
The key to being a "point" lambdafication is that it doesn't interact
with anything else; it is just a simple/better way to do something you
could already do that only involves adding a single new method.
Streamification. This is the process of adding stream-bearing
methods to existing classes and interfaces. For example:
Reader.lines() // returns Stream
String.chars() // returns IntStream
Random.intStream() // stream of random numbers
We feel we now have adequate input on the Streams framework. What
we're looking for is input on point lambdafications that we may be
missing. We're looking for the community to help provide suggestions
as to what those changes should be. The rubric is not "what would be
cool to add", but "what would have made code I've actually written
easier to write." Consequently if you can provide concrete examples
of the pain that you're suffering without your proposed change then
you will significantly increase your chance of being included.
NB: there are a lot of methods (like Class.getMethods()) that already
return a Collection, array, Enumeration, or Iterator. These are
already effectively streamified, since it is easy to turn any of the
above into a stream. You should also note that any existing methods
that take functional interfaces (for example Runnable, Callable or
Comparator) will work out of the box with the Lambda Enhancements and
no changes are required to methods that already take functional
Thanks for helping us improve Java.
Brian Goetz and The London Java Community