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 に答える