list literal gotcha and suggestion
Rémi Forax
forax at univ-mlv.fr
Wed Oct 7 05:40:34 PDT 2009
Reinier Zwitserloot a écrit :
> You yourself said this internal type can't ever be seen in java code.
> Collection is an interface, so what's it going to _be_? A set? A list?
>
The compiler can also reject that code because it's ambiguous.
> A new unspecified implementation of collection that is neither? What
> if I pass {1, 2, 3, 1} - will the duplicate be removed? What would it
> toString() to? (HashSet and ArrayList have different toString()
> implementations).
>
> --Reinier Zwitserloot
>
Rémi
>
>
> On 2009/07/10, at 07:20, Neal Gafter wrote:
>
>
>> If it is "an initializer" that is "compatible" with the "Collection"
>> argument type, then the "conversion" exists and the method is a
>> candidate. If the method is selected as the most specific one
>> during overload resolution, then the generated code will "perform
>> the conversion", which essentially means constructing the collection
>> object.
>>
>> On Tue, Oct 6, 2009 at 7:45 PM, Reinier Zwitserloot <reinier at zwitserloot.com
>>
>>> wrote:
>>>
>> So, passing a {1, 2, 3} literal inline to a method that takes a
>> Collection will not require a cast?
>>
>> Please explain how that would work.
>>
>> --Reinier Zwitserloot
>>
>>
>>
>> On 2009/06/10, at 23:52, Neal Gafter wrote:
>>
>>
>>> On Tue, Oct 6, 2009 at 1:48 PM, Reinier Zwitserloot <reinier at zwitserloot.com
>>>
>>>> wrote:
>>>>
>>> On 2009/06/10, at 21:32, Neal Gafter wrote:
>>> Not at all. I believe that the cast would be unnecessary in
>>> virtually all use contexts, just as the cast from "3" to "byte" is
>>> unnnecessary in virtually all use contexts.
>>>
>>> Doesn't coin include byte literals?
>>>
>>> Yes. That has nothing to do with the part of the existing language
>>> specification that allows "3" to be assigned to a "byte".
>>>
>>> I think you overstate. "Virtually all use contexts"? I'd say that
>>> methods taking in a java.util.Collection is a pretty big use context.
>>>
>>> Agreed, those contexts are included.
>>>
>>> -Neal
>>>
>>
>
>
>
More information about the coin-dev
mailing list