不能使用Arrays.copyOfRange

时间:2012-01-21 14:50:17

标签: android eclipse

我似乎无法在Eclipse Indigo 3.7.1的Android项目中访问Arrays.copyOfRange在Ubuntu 11.10上。

我的JRE是java-6-openjdk,我认为包括Arrays.copyOfRange

例如,如果我有这段代码:

int[] debug = new int[5];
int[] x = Arrays.copyOfRange(debug,0,4);

Eclipse告诉我

  

类型copyOfRange(int[], int, int)

的方法Arrays未定义

我不明白,因为Android参考Arrays包含此方法用于阵列。

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

在API级Arrays.copyOfRange()之前未引入方法9。确保您使用它作为最低SDK。

此外,您输入的索引不正确。在java中,如果您有一个大小为5的数组,则索引的范围为0->4

将您的代码更改为:

int[] debug = new int[5];
int[] x = Arrays.copyOfRange(debug,0,4); // use 4 instead of 5

答案 1 :(得分:4)

如果您需要使用早于9的API,则在API级别1中添加了System.arraycopy和Math.min,因此您可以复制copyOf函数并在代码中使用它。

public static byte[] copyOf(byte[] original, int newLength) {
    byte[] copy = new byte[newLength];
    System.arraycopy(original, 0, copy, 0,
                     Math.min(original.length, newLength));
    return copy;
}

答案 2 :(得分:-2)

Arrays.copyOfRange已经使用Java 6引入到Arrays类.Android基于Java 5.您不能将Java 6方法或类用于Android。