Search code examples
javaarraysobjectcopysystem

copyOf method undefined for the type Arrays


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?


Solution

  • 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; 
    }