метод copyOf не определен для типа Arrays - PullRequest
3 голосов
/ 07 мая 2010
elementData = Arrays.copyOf(elementData, newCapacity);

выдает ошибку:

Метод copyOf (Object [], int) не определен для типа Arrays

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

Ответы [ 4 ]

7 голосов
/ 07 мая 2010

Из javadocs :

С:
1.6

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

  1. Обновите его (однако, я сначала проконсультируюсь с системным администратором школы;)).
  2. Напишите свой собственный служебный метод, который выполняет ту же задачу (это с открытым исходным кодом (строка 2908)).
5 голосов
/ 07 мая 2010

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 голосов
/ 07 мая 2010

Arrays.copyOf была введена в 1.6. Один из способов обойти это обновление до 1.6. Другой - использовать System.arraycopy (см .: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html)

1 голос
/ 07 мая 2010

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

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

...