2010-05-07 5 views
3
elementData = Arrays.copyOf(elementData, newCapacity); 

дает ошибка:метод copyOf неопределенный для Массивы типа

The method copyOf(Object[], int) is undefined for the type Arrays

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

ответ

5

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

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

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

7

От javadocs:

Since:
        1.6

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

  1. Обновите его (однако я бы сначала посоветовался с администратором системы школы;)).
  2. Напишите свой собственный метод утилиты, который выполняет ту же задачу (это open source (строка 2908)).
+0

Хорошая идея .. (для 2), я никогда не думаю об этом пути. Теперь у меня есть еще одно и лучшее решение. –

Смежные вопросы