Proposal: Collection Literals
Joshua Bloch
jjb at google.com
Mon Mar 30 21:06:55 PDT 2009
Joe,
Thanks for looking at the proposal.
On Mon, Mar 30, 2009 at 8:53 PM, Joe Darcy <Joe.Darcy at sun.com> wrote:
>
>> This desugaring assumes the existence of a new library method,
>> asUnmodifiableList, described below under Library Support. Note that type
>> inference of the element type for the list literal is exactly as if the
>> following method were invoked with *ElementInitializers *as as actual
>> parameters:
>>
>>
>> <E> void foo(E... args) { }
>>
>
> So the type of the list is computed as if using var-args, including when
> the args are themselves augmented constants.
>
> One possible wrinkle here is the bad interaction between var-args and
> generics. This would be removed if only "top level" literals were allowed
> (i.e. no nested Lists and Set, etc.), at the cost of reducing the utility of
> the feature.
>
Good point! Currently, the desugaring of the Pascal's triangle example
would work, but it would generate an unchecked generic array creation (of
type List<java.lang.Integer>[] for varargs parameter). But, if we end up
implementing Bob Lee's proposal ("Simplified Varargs Method Invocation"),
the problem goes away:) I consider it a good sign when a group of language
changes work well together.
Josh
P.S. To be fair, I haven't thought through this in gory detail, especially
when it comes to map literals. But I'm hopeful.
More information about the coin-dev
mailing list