使用通用数组

时间:2014-02-08 22:30:36

标签: java generics multidimensional-array

美好的一天。我最近几个月一直在学习java。所以我创建了一个通用数组,如下所示。

public class Implementation<T> implements IMatrix<T>{

    private T[][] genMatrix;
    private Integer numberRows;
    private Integer NumberCols;
    public Implementation(){
        generateMatrix();
        for(int i = 0;i< numberRows;i++)
        {
           for(int j =0;j< numberCols;j++)
           {

              JOptionPane.showInputDialog("Enter value for row " + (i+1) + " and for column " + (j+1)))

            }
        }
          multiplyScalar(5);

    }
     //generate the array
    public void generateMatrix(){
        String rowString = JOptionPane.showInputDialog("Enter the number of rows!");
        numberRows = Integer.parseInt(rowString);
        String colString = JOptionPane.showInputDialog("Enter the number of cols!");
        numberCols = Integer.parseInt(colString);

        final Object[][] arrayO = (T[][])new Object[numberRows][numberCols];
        genMatrix = (T[][])arrayO;
     }
     //writeElements to the array;
     public void writeElem(int x, int y, T value){

          genMatrix[x][y] = value;
     }
     //now that those members are done I have created a method to access the data
     public T getElem(Integer i, Integer j){
          return (T)genMatrix[i][j];
     }

这就是我现在遇到的问题。我制作了这个二维数组。我想将此数组中的每个值乘以Integer c。我已经尝试了以下方式,但都失败了。

 public IMatrix<T> multiplyScalar(Integer c) throws MatrixException {
    // TODO Auto-generated method stub


    for(int i = 0; i< numberRows; i++)
    {
        for(int j=0;j<numberCols;j++)
        {
            /**
                                 THIS IS THE POINT AT WHICH IT CRASHES
                             */
            System.out.println(((Integer)(getElement(i, j)) * c));


        }
    }

    return null;
} 
}

由于ClassCastException,程序崩溃。我已经尝试了所有知识,以使其发挥作用。我不能将二维数组乘以整数。请帮忙。这使用了一个具有更多无关功能的接口。请注意,由于无法上传原始代码,因此此代码很可能崩溃。

1 个答案:

答案 0 :(得分:1)

问题是Java不支持运算符多态。您需要T来扩展Number,然后使用方法调用。它比人们想要的更加冗长。它在这里安静得很清楚:

Predefining multiplication for generics in java