0

Javaジェネリック型を使用した鼻毛については、これまでにありました。私は、いじることができる一般的な 2D 配列を作成しようとしています (これは 90% 実験的であり、10% はクラスなどに役立ちます)。私が得ているエラーに少し混乱しています。怒鳴っている言葉は理解できますが、その言葉も、修正方法もわかりません。コードは次のとおりです。

private T[][] grid;
private int size;
private int hw;
private int r_curr = 0;
private int c_curr = 0;
private Class<T> currclass;

@SuppressWarnings("unchecked")
public Array2D(Class<T> type, int r){
    currclass = type;
    hw = r;
    size = r*r;
    int count = 0;

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    grid = (T[][]) Array.newInstance(type, r);
    //TODO: This is the bit where I get the following error
    //Exception in thread "main" java.lang.ClassCastException: 
    //[Ljava.lang.Boolean; cannot be cast to [[Ljava.lang.Object;
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    for(int i = 0; i < grid.length; i++){
        grid[i] = (T[]) Array.newInstance(type, r);
        for(int j = 0; j < grid.length; j++){
            grid[i][j] = null;
            count ++;
        }
    }
    if(!(size == count)){
        if(verbose){System.out.println("ALERT...Failed to successfully create array!");}
        grid = (T[][]) Array.newInstance(type, r);
    }
}

そこにある他の壊れたものについては言わないでください(確かに存在します、ハハ)、私はまだそれを書いていますが、ジェネリック/キャスティングビットには困惑しています。

編集:これがスタックトレースです。ここにはあまり多くはありません。

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Boolean; cannot be cast to [[Ljava.lang.Object;
at mat.Array2D.<init>(Array2D.java:22)
at mat.BinMatrix.generateMatrix(BinMatrix.java:24)
at mat.BinMatrix.<init>(BinMatrix.java:9)
at mat.Test.main(Test.java:6)
4

3 に答える 3