copyOf方法未定义类型数组

时间:2010-05-07 14:14:33

标签: java arrays object copy system

elementData = Arrays.copyOf(elementData, newCapacity);

给出错误:

  

方法copyOf(Object [],int)未定义类型Arrays

这在我的家用电脑上不是问题,但是在我的学校,它给出了上面的错误。我猜它正在运行一个较旧的JRE版本 - 任何解决方法?

4 个答案:

答案 0 :(得分:7)

来自javadocs

  

<强>时间:
  1.6

所以是的,你的学校显然使用的是Java 1.5或更早版本。两种解决方案是:

  1. 升级(但是,我先咨询学校的系统管理员;)。)。
  2. 编写自己的实用工具方法,执行相同的任务(open source(第2908行))。

答案 1 :(得分:5)

1.6中引入了

Arrays.copyOf()

您需要创建一个所需大小的新数组,并将旧数组的内容复制到其中。

来自: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 :(得分:2)

1.6中引入了{p> Arrays.copyOf。一个解决方法是升级到1.6。另一种方法是使用System.arraycopy(请参阅:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html

答案 3 :(得分:1)

听起来你在不同的计算机上有不同版本的Java。

Arrays.copyOfJava 1.6中的新内容。