如何清除对Arrays.copyof()的这种模糊调用?

我正在Android手机上运行AIDE,并且无法编译以下的Java代码:

elements = Arrays.copyOf(elements, elements.length * 2);

这里的elementsint[]types。 我从AIDE得到的错误是

Several methods are applicable to (int[], int): 'java.util.Arrays.copyOf(int[], int)' and 'java.util.Arrays.copyOf(T[], int)'

我希望编译器选择前一个选项,但事实并非如此。 我该如何解决这个问题?

这是编译器/ IDE问题。 但是, Arrays.copyOf是一个非常简单的函数,所以如果无法使用IDE /编译器更新解决问题,只需编写自己的版本。 另一种方法是使用reflection来调用它。 但它带来了一些运行时开销,也使代码看起来很尴尬,所以我建议实现自己的版本。

这是代码:

 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遇到同样的问题,那么这不起作用。 试试吧。 如果它不起作用,您可以将它放在一个帮助器类中,并使用非错误的编译器来编译这个帮助器类。