I continue to believe that not fixing 6260652<br>was a mistake, both technically and <br>from the point of view of community relations.<br><br>I prefer the current implementation of ArrayList(Collection)<br>to one using c.toArray(ZERO_ARRAY) because it has<br>
slightly less trust of the argument collection.<br>(In any case, I think it's an academic question;<br>it would not be worth changing <br>either implementation to the other for aesthetic reasons)<br><br>Historically, we have also had bugs implementing<br>
toArray(T[]).<br><br>Martin<br><br><div class="gmail_quote">On Fri, May 22, 2009 at 05:05, David Holmes - Sun Microsystems <span dir="ltr"><<a href="mailto:David.Holmes@sun.com">David.Holmes@sun.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Doug Lea said the following on 05/22/09 21:56:<div class="im"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Sorry; I should have been clearer about why<br>
  c.toArray(new Object[c.size()])<br>
is subtly wrong here. ArrayList.size must equal<br>
the number of elements, which might be different<br>
than the array size. If c's size shrinks at an<br>
inconvenient moment during the call, then we might<br>
think that the trailing null, that toArray(T[] a)<br>
is required to append if a is too big, is actually a<br>
(null) element of the collection.<br>
</blockquote>
<br></div>
Ah I see.<br>
<br>
I'm thinking though that I'd find this hack more aesthetically pleasing:<br>
<br>
  static final Object[] ZERO_ARRAY = new Object[0];<br>
  ...<br>
  elementData = c.toArray(ZERO_ARRAY);<br>
<br>
this deals with the size issue, gets the right type and only creates one array (asuming the collection doesn't concurrently grow).<br>
<br>
Cheers,<br><font color="#888888">
David<br>
<br>
<br>
</font></blockquote></div><br>