----- Mail original -----
> De: "Brian Goetz" <brian.go...@oracle.com>
> À: "Remi Forax" <fo...@univ-mlv.fr>, "Stuart Marks" <stuart.ma...@oracle.com>
> Cc: "core-libs-dev" <core-libs-dev@openjdk.java.net>
> Envoyé: Mardi 19 Mars 2019 00:58:04
> Objet: Re: Proposal: JDK-8148917 Enhanced-For Statement Should Allow Streams

>> My fear is more than we will want in the future to have one code for all 
>> kinds
>> of Stream, but Stream<Object> will have to implement Iterable<Object> while
>> Stream<int> will not, this not something you can actually do with the current
>> generics, we may be able to do that with the reified generics but some
>> languages that already have reified generics like Swift are not able to do
>> that.
>> So by making Stream<T> to have different set of supertypes than Stream<int>, 
>> you
>> are forcing the future reified generics implementation to work on this case
>> because we will never introduce an implementation of reified generics that
>> doesn't support the classe of java.util.
> 
> This will work fine; Stream<T> <: IterableOnce<T>, and when we can
> instantiate T=int in the first, we'll be able to do so in the second as
> well.  (Having spent hundreds of hours banging my head against how we're
> going to migrate collections and stream to specialization, this one is
> not even on the list.)

for some reason i was convinced that IntStream.iterator() was returning a 
PrimitiveIterator.OfInt and not an Iterator<Integer>,
so yes, it will work but i don't understand why it's not BaseStream instead of 
Stream<Object> that inherits from Iterable.

And i still think that add IterableOnce is a very bad idea because it's the 
same trap as trying to introduce an interface UnmodifiableList as subtype of 
List.

Rémi
 

Reply via email to