Метод copyOf undefined для типа Массивы

elementData = Arrays.copyOf(elementData, newCapacity);

Дает ошибку:

Метод copyOf (Object [], int) undefined для типа Массивы

Это не проблема на моем домашнем компьютере, но в моей школе это приводит к ошибке выше. Я предполагаю, что он запускает старую версию JRE - любое обходное решение?

Ответ 1

Arrays.copyOf() был введен в 1.6.

Вам нужно будет создать новый массив необходимого размера и скопировать содержимое старого массива в него.

От: 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; 
}

Ответ 2

Из javadocs:

С
        1.6

Итак, ваша школа, очевидно, использует Java 1.5 или старше. Два решения:

  • Обновите его (однако я сначала проконсультирую администрацию школы;)).
  • Напишите свой собственный метод утилиты, который выполняет ту же задачу (с открытым исходным кодом (строка 2908)).

Ответ 4

Похоже, что у вас разные версии Java на разных компьютерах.

Arrays.copyOf является новым в Java 1.6.