0

配列から要素を取得するメソッドがあり、いくつかのプリミティブ型 (int[]、double[]、...) に対して同じメソッドを使用したいと考えています。方法は次のとおりです。

public static int[] getElementsFromTo(int[] data,int from, int to){
    int[] selectedData = new int[to-from];
    for (int idx = from; idx < to; idx++){
        selectedData[idx-from]=data[idx];
    }
    return selectedData;
}

同様の質問の投稿を見たことがありますが、良い答えが見つからなかったか、少なくとも理解できませんでした。最も近い応答は、このスレッドJava Generic Primitive type nd arrayにあります。

Object[] を使用して実行時にプリミティブ型を取得することを提案する人もいましたが、その方法はわかりません。メソッドのシグネチャは次のようになると思います。

public static Object[] getElementsFromTo(Object[] data,int from, int to)

しかし、dataの型を取得して、適切なプリミティブ型でselectedElements配列をインスタンス化するにはどうすればよいでしょうか?

どうもありがとう

4

1 に答える 1

5

あなたが達成できる最も近いものは、以下を使用することです

@SuppressWarnings("unchecked")
public static <A> A copyOf(A array, int from, int to) {
    int len = to - from;
    A a = (A) Array.newInstance(array.getClass().getComponentType(), len);
    System.arraycopy(array, from, a, 0, len);
    return a;
}

これにより、プリミティブ配列タイプと非プリミティブ配列タイプの配列がコピーされますが、リフレクションを使用してコピーされます。

于 2012-07-09T09:04:29.587 に答える