commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Neidhart <>
Subject Re: [collections] Fix Bag interface
Date Sun, 09 Jun 2013 18:25:51 GMT
On 05/13/2013 08:06 PM, Thomas Neidhart wrote:
> Hi,
> currently, the Bag interface states that it violates the Collection
> contract. This is mainly because the interface was defined like that,
> but could be easily changed.
> As we are not binary compatible anymore with previous releases, it would
> be the right time to do this now (or leave it as it is till the end of
> time).
> Any opinions / objections on this?


I needed some time to digest the feedback.

The result of playing around with an adapter from the Bag interface to a
newly proposed Multiset is attached to COLLECTIONS-468.

The Multiset interface would be exactly the same as Bag, with the
difference that it conforms to the Collection super-interface (Multiset
deliberately does not extend Bag).

The rest of the classes in the bag package could be migrated to a new
multiset package, basically providing the same functionality.

Additionally, there would be a MultisetUtils.asMultiset(Bag) method
which wraps a Bag as a Multiset (in case there is a need for something
like that).

This would give the users the choice, and we can later on still decide
if we remove the Bag interface after all.

I am not in favor of code duplication, but I see the benefit of both
interfaces. The adapter alone would limit the use of a Multiset, as the
unmodifiable, transformed and synchronized decorators would have to be
duplicated anyway.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message