RFR(s): 8072726: add adapter to convert Enumeration to Iterator
claes.redestad at oracle.com
Sat May 16 22:46:39 UTC 2015
On 2015-05-16 23:48, Remi Forax wrote:
> On 05/16/2015 06:21 PM, Claes Redestad wrote:
>> any reason not to just have Enumeration extend Iterable and
>> default-implement iterator()?
>> I guess there are compatibility risks I haven't thought through
>> completely, but I
>> think concrete classes that already implement both Enumeration and
>> Iterable should
>> continue to work as expected (since the concrete class'
>> implementation of
>> iterator always takes precedence), no?
> Hi Claes,
> yes, but there is an issue for code that uses instanceof to do
> something different if the object is an Enumeration or if the object
> is an Iterable.
I guess that's a possibility.
> You can only retrofit an existing class/interface to
> implements/extends an interface/class in a compatible way only if the
> interface/class is newly introduced in the release by example
> retrofitting Closeable to implement AutoCloseable is Ok in 1.7 because
> AutoCloseable was introduced in 1.7.
Probably due to introducing ambiguity in overload selection, come to
think of it.
I also realized Iterable should typically allow multiple passes over the
collection/enumeration, so this wouldn't feel right. Sorry!
So... I'm happy with Stuart's proposal.
I would also be happy (happier?) with a stream variant:
> and remember, prefer composition to inheritance :)
>> On 2015-05-16 02:37, Stuart Marks wrote:
>>> Hi all,
>>> Please review this small API enhancement to add a default method
>>> "asIterator()" to Enumeration that converts it into an Iterator.
More information about the core-libs-dev