429 |
|
* precise control over the runtime type of the output array, and may, |
430 |
|
* under certain circumstances, be used to save allocation costs. |
431 |
|
* |
432 |
< |
* <p>Suppose <tt>x</tt> is a queue known to contain only strings. |
432 |
> |
* <p>Suppose {@code x} is a queue known to contain only strings. |
433 |
|
* The following code can be used to dump the queue into a newly |
434 |
< |
* allocated array of <tt>String</tt>: |
434 |
> |
* allocated array of {@code String}: |
435 |
|
* |
436 |
|
* <pre> {@code String[] y = x.toArray(new String[0]);}</pre> |
437 |
|
* |
438 |
< |
* Note that <tt>toArray(new Object[0])</tt> is identical in function to |
439 |
< |
* <tt>toArray()</tt>. |
438 |
> |
* Note that {@code toArray(new Object[0])} is identical in function to |
439 |
> |
* {@code toArray()}. |
440 |
|
* |
441 |
|
* @param a the array into which the elements of the queue are to |
442 |
|
* be stored, if it is big enough; otherwise, a new array of the |
448 |
|
* @throws NullPointerException if the specified array is null |
449 |
|
*/ |
450 |
|
public <T> T[] toArray(T[] a) { |
451 |
+ |
final int size = this.size; |
452 |
|
if (a.length < size) |
453 |
|
// Make a new array of a's runtime type, but my contents: |
454 |
|
return (T[]) Arrays.copyOf(queue, size, a.getClass()); |