Reputation: 43
elementData = Arrays.copyOf(elementData, newCapacity);
Gives error:
The method copyOf(Object[], int) is undefined for the type Arrays
This was not a problem on my home computer, but at my school's it gives the error above. I'm guessing it's running an older JRE version - any workaround?
Upvotes: 4
Views: 12133
Reputation: 100133
Sounds like you have different versions of Java on different computers.
Arrays.copyOf
is new in Java 1.6
.
Upvotes: 2
Reputation: 1109222
From the javadocs:
Since:
1.6
So yes, your school is apparently using Java 1.5 or older. Two solutions are:
Upvotes: 8
Reputation: 76908
Arrays.copyOf()
was introduced in 1.6.
You'd need to create a new array of the size you need and copy the contents of the old array into it.
From: http://www.source-code.biz/snippets/java/3.htm
/**
* Reallocates an array with a new size, and copies the contents
* of the old array to the new array.
* @param oldArray the old array, to be reallocated.
* @param newSize the new array size.
* @return A new array with the same contents.
*/
private static Object resizeArray (Object oldArray, int newSize) {
int oldSize = java.lang.reflect.Array.getLength(oldArray);
Class elementType = oldArray.getClass().getComponentType();
Object newArray = java.lang.reflect.Array.newInstance(
elementType,newSize);
int preserveLength = Math.min(oldSize,newSize);
if (preserveLength > 0)
System.arraycopy (oldArray,0,newArray,0,preserveLength);
return newArray;
}
Upvotes: 7
Reputation: 39495
Arrays.copyOf
was introduced in 1.6. One work around would be to upgrade to 1.6. Another is to use System.arraycopy
(see: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html )
Upvotes: 3