c.toArray might (incorrectly) not return Object (see 6260652)
martinrb at google.com
Sun May 24 23:42:47 PDT 2009
I continue to believe that not fixing 6260652
was a mistake, both technically and
from the point of view of community relations.
I prefer the current implementation of ArrayList(Collection)
to one using c.toArray(ZERO_ARRAY) because it has
slightly less trust of the argument collection.
(In any case, I think it's an academic question;
it would not be worth changing
either implementation to the other for aesthetic reasons)
Historically, we have also had bugs implementing
On Fri, May 22, 2009 at 05:05, David Holmes - Sun Microsystems <
David.Holmes at sun.com> wrote:
> Doug Lea said the following on 05/22/09 21:56:
>> Sorry; I should have been clearer about why
>> c.toArray(new Object[c.size()])
>> is subtly wrong here. ArrayList.size must equal
>> the number of elements, which might be different
>> than the array size. If c's size shrinks at an
>> inconvenient moment during the call, then we might
>> think that the trailing null, that toArray(T a)
>> is required to append if a is too big, is actually a
>> (null) element of the collection.
> Ah I see.
> I'm thinking though that I'd find this hack more aesthetically pleasing:
> static final Object ZERO_ARRAY = new Object;
> elementData = c.toArray(ZERO_ARRAY);
> this deals with the size issue, gets the right type and only creates one
> array (asuming the collection doesn't concurrently grow).
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the core-libs-dev