我正在尝试创建一个自定义类来创建矩阵,并且除其他外,执行将所有单元格相加或将它们全部相乘的操作。但是,我想使用泛型,因此矩阵可以是任何类型的数字:float、double、int 等。因此我设置了这样的类:
public class Matrix<num>
初始化时,此类的实例化基于用户提供的数据创建一个矩阵,存储在实例的 .matrix 变量中。现在,在我想要添加所有单元格的代码中,我执行以下操作:
public num addMatrices(num[][] toAdd){
num result;
if (toAdd.length != this.rows && toAdd[0].length != this.columns){
System.out.println("Matrix mismatch. Try Again.");
return toAdd[0][0];
}
for (int i=0; i<rows; i++)
for (int j=0; j<rows; j++){
result = this.matrix[i][j] + toAdd[i][j];
}
}
但是,我遇到了多个问题。首先,我无法将 result 初始化为零,这使得执行 += 操作变得困难。其次,当我尝试添加两个矩阵的单元格时,编译器告诉我 + 运算符对于类型 num 是未定义的。
我认为泛型的全部意义在于拥有一个包罗万象的类型,这样我就可以在一种情况下使用浮点数和在另一种情况下使用整数,但是如果我需要为 + 等运算符指定类型,我不确定优势在哪里进来...