RFR(s): 8072726: add adapter to convert Enumeration to Iterator

Remi Forax forax at univ-mlv.fr
Sat May 16 21:48:33 UTC 2015

On 05/16/2015 06:21 PM, Claes Redestad wrote:
> Hi,
> any reason not to just have Enumeration extend Iterable and 
> default-implement iterator()?
> http://cr.openjdk.java.net/~redestad/scratch/enumerable.00/
> 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.

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.

and remember, prefer composition to inheritance :)

> /Claes


> 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.
>> Webrev:
>>     http://cr.openjdk.java.net/~smarks/reviews/8072726/webrev.0/
>> Bug:
>>     https://bugs.openjdk.java.net/browse/JDK-8072726
>> Thanks,
>> s'marks

More information about the core-libs-dev mailing list