我在Android手机上运行AIDE,无法编译以下的Java代码:
elements = Arrays.copyOf(elements, elements.length * 2);
此处elements
的类型为int[]
。我从AIDE得到的错误是
Several methods are applicable to (int[], int): 'java.util.Arrays.copyOf(int[], int)' and 'java.util.Arrays.copyOf<T>(T[], int)'
我希望编译器选择前一个选项,但事实并非如此。我该如何解决这个问题?
答案 0 :(得分:1)
这是编译器/ IDE问题。但是,Arrays.copyOf
是一个非常简单的函数,因此如果无法使用IDE /编译器更新解决问题,只需编写自己的版本。另一种方法是使用反射来调用它。但它带来了一些运行时开销,也使得代码看起来很笨拙,所以我建议实现自己的版本。
以下是代码:
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
当然,如果您为System.arraycopy
遇到同样的问题,那么这不起作用。试试吧。如果它不起作用,你可以将它放在一个帮助器类中,并使用一个非错误的编译器来编译这个帮助器类。