java的泛型类和OBJECT类有什么区别?
object不是挺好用的吗?

解决方案 »

  1.   

    OBJECT需要转型,而?可以动态的指定,省去了转型(YourClassTyep)Object的代码.
      

  2.   

    奥,明白一些。就是泛型不需要强制类型转化,可以动态的自动转化成原来的类型。
    那我有int,float,char,double等类型的数组,我将他们泛型化后,进行排序,他们还可以正确的输出排序结果吗?特别是char和其它几种类型。
    是不是我只要传递一个通用的数组,剩下的事情就不用判断数组的类型,虚拟机自动会转换的,我们只需调用相应的排序算法即可!
      

  3.   

    你误会泛型的意思了。假如你想把类型为Car的n个实例放入数组,比如List list = new ArrayList();
    list.add(new Car());
    list.add(new Car());
    ...由于list能够容纳的都是从Object继承下来的类,所以这么写当然没有问题。可是,当你想把list中的Car实例取出来的时候,如果没有泛型,你必须造形,如:Car car = (Car) list.get(0);这比较麻烦而且容易出错,因为你可能向list添加Bus类的实例,如果造形成Car则肯定不对了。而如果用泛型,则可以写成这样:List<Car> list = new ArrayList<Car>();
    list.add(new Car());
    list.add(new Car());

    Car car = list.get(0);你看,这回list只能添加Car类型的实例,而且取的时候不用再造形了。泛型的好处是在编译时就确定类型信息,而不是在运行时候,大大增加了语义,安全性也有提高。至于你说的问题,应该是不可以的,泛型必须规定数组内容的类型,而不能把int、float、char、double等类型混合放入一个确定类型的泛型数组中,这恰恰违反了泛型的初衷。如果要解决你所遇到的问题,可以把类型转换成同一种类型然后再排序。