Android can';t使用Arrays.copyOfRange
在我的Android项目中,在Ubuntu11.10上的EclipseIndigo3.7.1中,我似乎无法访问Arrays.copyOfRange 我的JRE是java-6-openjdk,我认为它包括Arrays.copyOfRange 例如,如果我有以下代码:Android can';t使用Arrays.copyOfRange,android,eclipse,Android,Eclipse,在我的Android项目中,在Ubuntu11.10上的EclipseIndigo3.7.1中,我似乎无法访问Arrays.copyOfRange 我的JRE是java-6-openjdk,我认为它包括Arrays.copyOfRange 例如,如果我有以下代码: int[] debug = new int[5]; int[] x = Arrays.copyOfRange(debug,0,4); 日食告诉我 未为类型数组定义方法copyOfRange(int[],int,int) 我不明白,因
int[] debug = new int[5];
int[] x = Arrays.copyOfRange(debug,0,4);
日食告诉我
未为类型数组定义方法copyOfRange(int[],int,int)
我不明白,因为Android参考包括了数组的这种方法
有什么想法吗?Arrays.copyOfRange已通过Java 6引入Arrays类。Android基于Java5。您不能在Android上使用Java 6方法或类。该方法数组。copyOfRange()
直到API级别9
才引入。确保将其作为最低SDK使用
此外,您的索引不正确。在java中,如果您有一个大小为5
的数组,则索引范围为0->4
将代码更改为:
int[] debug = new int[5];
int[] x = Arrays.copyOfRange(debug,0,4); // use 4 instead of 5
如果您需要使用早于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;
}
伊克斯,a-1。如果你是-1选民,请解释一下。谢谢。@slayton好的,我添加了一些代码。请重新考虑-1票。谢谢。谢谢Stefan,但我不明白为什么它会被包含在Android参考网页中,如果它在Android文档中,那么它就受到Dalvik VM的支持,但是它可能不会出现在所有API中levels@slaton:谢谢,我已经更改了示例中的代码,但问题是该方法甚至无法识别,无论我使用什么值,copyOfRange
方法直到API级别9才引入android sdk。如果您想使用这些方法,您必须相应地配置API级别。您也可以简单地编写自己的数组复制方法。谢谢,现在我明白了。我认为这并不是一个明显的解决方案,而且这个问题不再需要投票了,所以请考虑投票。我忘了提:我不知道这是如何工作的,但是你应该把你的答案的文字更新到你在评论中提到的API水平,这样我就可以接受它了吗?谢谢。@aez好的,我把它添加到了答案中