我似乎无法在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包含此方法用于阵列。
有什么想法吗?
答案 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。