14

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

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

4

1 回答 1

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,那么这不起作用。简单地尝试一下。如果它不起作用,你可以将它放在一个帮助类中,并使用一个没有错误的编译器来编译这个帮助类。

于 2012-09-18T08:36:26.877 回答