SUGGESTED FIX
--- /u/martin/ws/mustang/src/share/classes/java/util/Arrays.java 2005-08-11 11:04:21.718074000 -0700
+++ /u/martin/ws/toArray/src/share/classes/java/util/Arrays.java 2005-08-27 18:01:03.522592000 -0700
@@ -2949,7 +2948,7 @@
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
- private Object[] a;
+ private final E[] a;
ArrayList(E[] array) {
if (array==null)
@@ -2962,17 +2961,27 @@
}
public Object[] toArray() {
- return (Object[])a.clone();
+ return Arrays.copyOf(a, a.length, Object[].class);
+ }
+
+ public <T> T[] toArray(T[] a) {
+ int size = size();
+ if (a.length < size)
+ return Arrays.copyOf(this.a, size, (Class<T[]>) a.getClass());
+ System.arraycopy(this.a, 0, a, 0, size);
+ if (a.length > size)
+ a[size] = null;
+ return a;
}
public E get(int index) {
- return (E)a[index];
+ return a[index];
}
public E set(int index, E element) {
- Object oldValue = a[index];
+ E oldValue = a[index];
a[index] = element;
- return (E)oldValue;
+ return oldValue;
}
public int indexOf(Object o) {
|