Proposal: Collection Literals

Reinier Zwitserloot reinier at
Tue Mar 31 07:34:11 PDT 2009

First off: WANT!


Whichever form Reified Lists/Sets/Maps eventually take, won't they  
neccessarily extend List<FOO> and friends? I imagine that any attempt  
to create:

public interface ReifiedList<reified T> {}

involves making that type implement List<T>, eventhough treating your  
reified list as a List<T> would no longer give you the benefit of  
reification, possibly.

Therefore, what we seem to be talking about, if I'm right so far (and  
I'm just taking a stab at this here, please correct me if I'm wrong!),  
is that we specify that the collection literals return some  
implementation of List<T>, Set<T>, and Map<K, V>, with listed  
behaviours (specifically, 'linked' behaviour for maps and sets,  
otherwise nothing special), but that in a future version, we may  
change this to: They will return ReifiedList, ReifiedSet, and  
ReifiedMap, all of which extend List, Set, and Map.

How is that not backwards compatible?

  --Reinier Zwitserloot

On Mar 31, 2009, at 10:51, Joshua Bloch wrote:

> Mark,
> Presumably you'd be happy to replace them with lists of sets, and  
> then you
> could use (nested) collection literals?
>        Josh
> On Tue, Mar 31, 2009 at 1:47 AM, Mark Thornton  
> <mthornton at>wrote:
>> Joshua Bloch wrote:
>>> Neal,
>>> In other words, we could prohibit set literals in array  
>>> initializers.
>>> Arrays of sets are an awful idea anyway, so it's no great loss.
>> Ouch, I have a few of those. Invariably where the universe of  
>> unique sets
>> is very small and the array contains all of them.
>> Regards,
>> Mark Thornton

More information about the coin-dev mailing list