该代码描写了java中泛型矩阵的加法和乘法使用。首先创建了名为 GenericMatrix 的泛型类,并通过受限通配<E extends Number>指明 GenericMatrix 泛型类型为Number的子类型。并在GenericMatrix中创立了其针对不同类型数据操作的加和乘的抽象方法,并在随后的IntegerMatrix 和DoubleMatrix中将其抽象方法重新实现!最后在main方法中创建了Integer和Double数组,来进行加法和乘法操作!注:该程序主要来自Y.Daniel Liang老师的《Java语言程序设计~进阶篇》,程序略有改动,一本不错的书哦,值得收藏!
下面是代码展示:
//注:该程序主要来自Y.Daniel Liang老师的《Java语言程序设计~进阶篇》,程序略有改动,一本不错的书哦,值得收藏!
abstract class GenericMatrix
{
//将矩阵元素相加的抽象方法;
protected abstract E add(E o1, E o2);
//将矩阵的两个元素相乘的抽象方法
protected abstract E multiply(E o1, E o2);
//定义零矩阵的抽象方法
protected abstract E zero();
//将两个矩阵相加,用泛型E来表示类,所以方法是非静态的;
public E[][] addMatrix(E[][] matrix1, E[][] matrix2){
E[][] result = (E[][])new Number[matrix1.length][matrix1[0].length];
//注意E[][] result = new Number[matrix.length][matrix1[0].length]是不对的,
//因为不能用泛型类型来创建数组,要用(E[][])来转换才能创建数组;
//检查矩阵matrix1和矩阵matrix2的大小是否相等,matrix1.length为行数,matrix1[0].length为列数
if ((matrix1.length != matrix2.length) || (matrix1[0].length != matrix2[0].length)){
throw new RuntimeException("The matrices do not have the same size!");
}else{for(int i=0; i
大家有啥问题可以指出哦,这也是我第一篇博客,我也是在学习中,希望和大家一起进步!加油 ^_^