Why is Stream<T> not an Iterable<T> ?
Oliver Doepner
odoepner at gmail.com
Tue Mar 26 19:56:10 PDT 2013
Hello,
I recently joined this mailing list. I am quite excited about the
lambda functionality coming in Java 8.
I also had the pleasure to attend Brian's "Road to Lambda" talk at JavaOne.
Thanks for the great work.
Today I looked at the Javadoc at
http://lambdadoc.net/api/java/util/stream/Stream.html
http://lambdadoc.net/api/java/lang/Iterable.html
I hope that site has recent information. I had some problems finding
the source itself on hg.
I probably misunderstood the (not so obvious?) links at
http://hg.openjdk.java.net/lambda/lambda/.
Anyhow, I noticed that both of the methods of Iterable (iterator,
forEach) are also present on Stream.
Now I wonder why Stream<T> does not extend Iterable<T>.
Then I searched the lambda-dev archives for threads related to Iterables.
I did not find a discussion directly related to this. I hope I didn't
miss anything.
I think that it would be nice if Stream instances could be passed to
existing APIs that take Iterable.
Naively speaking: Why have the same methods with the same signatures
and semantics / Javadoc on two core Java interfaces and not make one a
subtype of the other? That feels like a pair of quack-like-a-ducks
calling for subtyping. :^)
Thanks
Oliver
--
Oliver Doepner
http://doepner.net/
More information about the lambda-dev
mailing list