我在书上看到说接口是不允许产生对象的,但有时候看到诸如“List l;”之类的语句,而容器List就是一个接口,它为什么能定义对象呢?请指教。

解决方案 »

  1.   

    但是请你注意了
    这个l有new过么?没有吧比如某方法:fun(List   l){.......}
    又有某类  class classABC implements List{.....}真正使用时传递的参数是实现这个接口的类fun(classABC)或者List l=new classABC();
      

  2.   

    List l,这里的l,是个变量,而不是对象,所谓的对象,是在内存中占有空间的。
    如果只List l,那么,不会为l分配内存空间,只会把这个l放到堆栈中,一旦把一个实例化的对象,赋值给了l.
    l就指向了那个实例化的对象,而这个实例化的对象,是占有内存空间的。
    类似的还有:
    Map map=mew HashMap();
    这是一个很常用的用法。Map是个接口,声明了个变量map,是Map类型,然后,new 一个HashMap(),new 了之后,内存
    中就有这么一个HashMap对象了,内存空间也按照HashMap的默认大小分配了,然后通过= ,把这个变量map指向了刚new
    出来的HashMap对象。
    还例如:
    Map map1=new TreeMap()
      

  3.   

    应该是Map   map=new   HashMap();
    不是Map   map=mew   HashMap(); 
    躺着敲的键盘,难免敲错……呵呵 
      

  4.   

    List list = new ArrayList();
      

  5.   

    Think in java 惹得货 万物皆对像