本帖最后由 She_Is_So_Pretty 于 2012-08-09 11:27:54 编辑

解决方案 »

  1.   

    T temp = null;
    你数组里放的是对象!array[j] < array[j + 1]
    能这样比较大小?
      

  2.   

    楼主,你好,为了你这个问题我专门编了一下程,大概找出了一些问题,那么现在就和大家分享一下吧!
    1、Number接口是定义在java.lang包中,是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short的超类,它本身是一个抽象类,在查询了API文档之后发现它没有compareTo()这个方法,也就是说它自身是无法使用<,>和=号这些算术运算符的,这是你的一个错误,修改的方法时将Number改为Comaprable,完整的方法头是这样的:public static <T extends Comparable<T>> T[] bubbleSort(T array[])。值得一提的是所有基本类型的封装类都实现了这个接口,也就是说它能实现Number接口的功能。
    2、我自己写了一个测试程序,如下:
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    Integer a[]={9,7,6,8,2,4,0};
    // int b[]={9,7,6,8,2,4,0};
    a=bubbleSort(a);
    for(Integer temp:a){
    System.out.print(temp+" ");
    }

    Number num=new Integer(0); }
    在这个程序中bubbleSort的参数如果是b的话依然会报错,因为基本数据类型的数组类型不是T【】的子类,所以是不可以使用b。话有点多,希望对楼主有用,Good Luck!
      

  3.   

    楼主是新手吧:就是比较符号是不能比较对象的,== 和 equals()比较的是2对象的地址。 除非重写equals()方法来比较2个特定对象的内容。
      

  4.   

    还补充一句: 实现Comparable接口也是要重写compareTo()方法来比较大小。反正是不能直接运用比较符号来比较大小。
      

  5.   

    确实啊,Number 本身就不支持'<','>'操作。
    还真没注意过这个。
      

  6.   


    多带一个参数,public <T extends Number> T[] bubbleSort(T array[],Comparator<? super T> comp)。你的对象必须实现Comparator接口,可以参考源码Collections.java
      

  7.   

    问题很明显:The operator < is undefined for the argument type(s) T, T 就是说 ‘<’操作符没有定义这种关系比较,
    因为‘<’只能比较java定义的数据类型的大小,
    而这里的数据类型是T,编译的时候是通不过的,
    只有在运行的时候,知道了T具体是那种类型,才能用‘<’来进行比较。
      

  8.   

    楼主的类是以什么比大小呢
    你可以写一个方法compare(),专门负责对象比较
    a.compare(b)  结果如果>0,就是a大于b