本人初学java,最近学习java泛型,遇到了一些问题,如下:public class Matrix<T extends Number>{
    int cols;
    int rows;
    Class<T> type;
    T[] data = null;    public Matrix(int cols, int rows){
        //.....
        data = (T[])Array.newInstance(type, cols * rows);
    }
    public Matrix<T> add(Matrix<T> x){
        //.....
        T y = data[0] + x.data[0];//这里说T没有定义+运算符,该怎么解决呢?
    }
}Java泛型

解决方案 »

  1.   

    随便举个,Integer是Number的子类吧,两个Interger对象能用+运算?
      

  2.   

    可以啊我特地试验了,才发这个帖子的
    比如说:
    Integer x = 1;
    Integer y = 2;
    Integer z = x + y;//这样做是可以的
      

  3.   

    明白了,就是因为Number没有定义这些运算符。。现在我的目的就是要实现int,float,double等等基本类型的矩阵+-*运算,该怎么实现?
      

  4.   

    以前在c++上,感觉这些实现起来是非常方便的,因为java是初学,所以不知道该怎么做
      

  5.   

    主要是那几个final类都没法继承的吧
      

  6.   

    解决方法
    Number类有个doubleValue() 方法,多查API!
      

  7.   

    多谢提醒
    但是我的意思是:使用泛型的意义在于,它适合各种数据类型,如果使用Number.xxxValue()这种方式的话,就没有使用泛型的必要了我直接只定义Matrix类的data为double类型就可以了
      

  8.   

    参数的问题。。泛型不能用基本数据类型,所以都要改为基本数据类型的包装类。。
    把int都改为Integer试试。。
      

  9.   

    谢谢,我最终还是打算不使用泛型了···,的确java对这些特性支持不是很好