Arrays类型没有定义copyOf方法。

4
elementData = Arrays.copyOf(elementData, newCapacity);

出现错误:

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

这在我的家用电脑上不是问题,但在学校的电脑上出现了上述错误。我猜测它正在运行更旧的JRE版本 - 有什么解决办法吗?

4个回答

8

根据Java文档

自从:
        1.6

所以,是的,你的学校似乎在使用Java 1.5或更早版本。有两个解决方案:

  1. 升级它(但我建议先咨询学校的系统管理员 ;) )。
  2. 编写自己的实用程序方法来执行相同的任务(它是开源的(第2908行))。

好主意..(对于2),我从未想过这种方式。现在我有了一个更好的解决方案。 - Pankaj Kumar

7

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

3

2

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

Arrays.copyOf 是在 Java 1.6 中新增的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接