Helper classes
Brian Goetz
brian.goetz at oracle.com
Mon Apr 15 05:54:41 PDT 2013
Yes, for reasons Maurizio outlined, we're leaving this to last. But it
is more subtle than "just leave everything in Foos" or "move everything
from Foos to Foo."
The "bag of static methods" classes often tend to be dumping grounds,
and we definitely do not want interfaces to suffer the same fate. For
example, look at Collections. Even if the move could be done easily and
compatibly and without disruption, I would definitely *not* be in favor
of moving everything from Collections into Collection -- too many of
them are too unimportant to live in the interface.
The methods in Streams are all candidates, but that's actually only been
true for a few days. Before we split off the low-level methods into
StreamSupport, I would have said "we definitely will not move all of
these methods into Stream."
So, while this gives API designers one more tool, there don't seem to be
obvious hard and fast rules about how to use this tool yet, and the
simple-minded "all or nothing" candidates are likely to give the wrong
result.
So, yes, to be considered, and was already on the to-do list on my desk
right now.
On 4/15/2013 4:53 AM, Stephen Colebourne wrote:
> Currently, Project Lambda has a number of helper clases, notably
> Collectors and Streams, which are clearly related to the interface.
> Since JDK8 has static methods on interfaces, are there plans to move
> the static methods to the interface?
>
> This would allow methods such as intBuilder(), emptyIntStream() and
> singletonIntStream(int t) to be on IntStream rather than on Stream,
> and thus have the simpler names of builder(), emptyStream(),
> singletonStream().
>
> Making the change might also affect some method names, as sometimes
> they read differently, or are otherwise confusing, when on the
> interface.
>
> As a note, on JSR-310, we did move the methods from similar static
> helper classes to the interfaces:
> http://hg.openjdk.java.net/jdk8/tl/jdk/file/f4d50e8cc9e2/src/share/classes/java/time/temporal/TemporalAdjuster.java
> http://hg.openjdk.java.net/jdk8/tl/jdk/file/f4d50e8cc9e2/src/share/classes/java/time/temporal/TemporalQuery.java
> although I'm not sure that counts as precedent yet.
>
> Stephen
>
More information about the lambda-dev
mailing list