JAVA generic array 泛型数组

在JAVA中是不支持泛型数组的,不能通过 Z[] array=new Z[10] 这样的方式来创建数组,而是使用反射Aarry.newInstance来创建:

 

具体代码如下:

 1 public Z[][] convert2DimArray(Class<Z> type){
 2         TreeSet<X> XLabel=getXLabel();
 3         TreeSet<Y> YLabel=getYLabel();
 4         Z[][] array=(Z[][])(Array.newInstance(type,XLabel.size(),YLabel.size()));
 5         int xIdx=0;
 6         for (X x : XLabel) {
 7             int yIdx=0;
 8             for (Y y : YLabel) {
 9                 array[xIdx][yIdx]=get(x,y);
10                 yIdx++;
11             }
12             xIdx++;
13         }
14         return array;
15     }

调用函数时使用:

Double[][] twoDimArray=theArray.convert2DimArray((Double.class));

 

 

或者使用:

public Z[][] convert2DimArray(Class<Z[][]> type){
        TreeSet<X> XLabel=getXLabel();
        TreeSet<Y> YLabel=getYLabel();
        Z[][] array=type.cast(Array.newInstance(type.getComponentType().getComponentType(),XLabel.size(),YLabel.size()));
        int xIdx=0;
        for (X x : XLabel) {
            int yIdx=0;
            for (Y y : YLabel) {
                array[xIdx][yIdx]=get(x,y);
                yIdx++;
            }
            xIdx++;
        }
        return array;
    }

调用时:

Double[][] twoDimArray=theArray.convert2DimArray((Double[][].class));

 

以上代码还可以看出Java “二维数组” 其实就是一位数组的每个元素都是一维数组。 

posted @ 2014-06-05 22:01  Tong Zeng  阅读(2509)  评论(1编辑  收藏  举报