1

がジェネリック型でClassあるの配列を作成するのに苦労しています。Class

次のように、関数の例を見てみましょう(は静的クラス変数であるaddOverlayと仮定します)。mapSize

public void addOverlay(Class<?> dataType) {
    dataType[][] d = new dataType[mapSize][mapSize];
    overlayMap.add(new Class[mapSize][mapSize]);
}

エラーが表示されますdataType cannot be resolved to a typedataTypeクラス型を保持しているため、これ自体は意味がありません。それでも、ステートメントを使用して直接挿入しようとしました(以前と同じエラーが発生します):

overlayMap.add(new dataType[mapSize][mapSize]);

などなど。も使ってみましたdataType.getClass()

クラスがジェネリック型である場合、Javaでクラスの配列を作成する方法はありますか?

4

2 に答える 2

2

dataType は、特定のクラスに関するメタデータのみを保持する Class クラスのインスタンスであることを明確にする必要があります。あなたの場合、次のようにメソッドを変更できます。

public void addOverlay(Class<?> dataType) {
    Object subArray = Array.newInstance(dataType, mapSize);
    Object array = Array.newInstance(subArray.getClass(), mapSize);
    for (int i = 0; i < mapSize; i++) {
        Array.set(array, i, subArray);
    }
    overlayMap.add(array);
}
于 2013-01-12T09:35:23.343 に答える
0

「dataType」はすでにクラスであるため、getClass() を呼び出しても答えにはなりません (Class.class を取得するだけです)。「java.lang.ref.Arrays.newArray()」でこれを行うことができます。

于 2013-01-12T06:36:49.097 に答える