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

时间:2012-09-17 10:42:36

标签: java android aide-ide

我在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)'

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

1 个答案:

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