我是个JAVA初学者,刚学习到集合类,教材上有这样一行:
Collection<String> list = new ArrayList<String>();
我感到有点迷惑,Collection是接口,接口不是不能实例化吗?
另外<String>说是泛化成String型,我不太明白,这是个怎么样的过程.<>是什么操作符.哪位前辈给我解释一下这行JAVA语句及其语法.

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【insect_fly】截止到2008-08-02 10:45:15的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:0.00  %               结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=insect_fly
      

  2.   

    Collection <String> list = new ArrayList <String>();
    我感到有点迷惑,Collection是接口,接口不是不能实例化吗?
    -----------------------------------
    父类可以持有子类的引用。
    比如:
    class A {}
    class B extends A {} 
    那就可以写 A a = new B();
    这就是多态思想。
    这里其实是一样的
    --------------
    另外 <String>说是泛化成String型,我不太明白,这是个怎么样的过程. <>是什么操作符. 
    -----------------------------------------
    以前使用集合都是这样来用的,如下:
    List list = New ArrayList();
    list.add("123");
    list.add(new Integer(4));
    而当你取出的时候,就要进行强制转换,
    而有了泛型后呢,直接指定里面放什么类型。
    拿出时就不用强转了。
    <>就是个符号。
    就这么规定的,使用泛型,就用 <>
    o了。。
      

  3.   

    那么就是说接口也可以通过子类实例化,对吗?
    集合里是不是可以存放不同类型的对象?
    经过<String>泛化之后,集合中存放的就是String型对象?
    还是当从集合中取出对象时自动转换成String型?
      

  4.   

    <String>是JDK新加的特性 是从C++那里延伸出来的 就是类型匹配
      

  5.   

    Collection <String> list = new ArrayList <String>(); 这一句说的是可以创建接口变量,但是必须用实例化了该接口的类对象,<String>说是泛化成String,这个对象所具有的方法返回的类型默认是String,无须强制类型转换,这是个人愚笨理解
      

  6.   

    new ArrayList <String>(); 这句话看清楚了,不是创建的Collection接口的实例,创建Collection借口的实例应该是这样写的 new Collection<String>(),list只是存放了ArrayList对象的地址,然后利用多态去调用ArrayList的方法
      

  7.   

    <>这个操作符给编译器看的吧,指定 ArrayList 里面的对象类型, 其他没什么意思,个人理解
      

  8.   

    其实ArrayList是collection 的接口的实现,,你可以理解为是它的子类..其实是实例话collection子类的实例..明白吗??
      

  9.   

    ArrayList已经是类了,
    <>范型标识,给了String后,ArrayList中就只能放String类型的对象了
    <Integer>,则只能放Integer类型的队象
      

  10.   


    没看懂呀,new Collection <String>()表示可以实例化接口?
      

  11.   

    2楼已经说的很好了当在jdk1.5后加上了泛型之后我们这样用Collection<string> list = New ArrayList<string>(); 
    list.add("123"); 
    list.add(new Integer(4)); //这个时候像这样的语句还能够逃过编译器嘛?很显然是不能的,这样减少了在运行过程中强制转换,增强了代码的健壮性。
      

  12.   

    list <String>  = new ArrayList <String>(); 
    这么写有什么区别?