List list=某个方法返回的List集合 ;
然后就用list点出方法出来使用,我奇怪的是
List不是一个接口吗,怎么点出来的方法可以实现功能的,接口里面不是空吗?一般不都是要new 一个实现类出来的吗?就算可以
的话,它有这么多个实现类AbstractList, AbstractSequentialList, ArrayList, AttributeList, 
CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, 
Vector ,他用哪个的啊?其实这个问题只是以点盖面,也不是问List的问题,而是接口的问题,返回接收一个接口,然后可以用接口方法的问题,感觉很奇怪

解决方案 »

  1.   

    这个格式才是对的List list=new ArrayList();
    没有说不new的,你自己看错了吧。不new的是static的,自动加载的
      

  2.   

    当用其它方法返回一个List的时候,其实是返回的List接口的实现类.只要返回的是List接口的实现类,此时List变量指向这个实现类的.所以能调用当中的方法
    List接口里有很多方法,只是是抽象的而已.
      

  3.   

    某个方法返回的List集合
    哪来的?它不就是一个List的实现类吗?
      

  4.   

    1.楼主有足够耐心的话,可以翻看那个方法的实现,这样他到底实例化了List的哪种实现就知道了。
    2.方法只是返回了一个实现了List接口的实现类的一个实例,当然List list = xxxFunction();成立。
    3.这里面也涵盖了一个思想和n多基础。楼主只要知道他给的是个list即可,所有list的实现遵循了同样的规范,而无须调用端知道具体的实现,List只是一套提供特定的一组服务的规范而已,面向接口的设计,可以让调用端专注于从接口获取服务,而楼主可以根据需要在日后轻松的更换接口的实现,而不用大改特改程序。
      

  5.   

    楼主第一句中“List list=某个方法返回的List集合 ; ”返回的应该是List的一个实现类,所以这也就不存在楼主的疑惑了
      

  6.   

    这个格式才是对的List list=new ArrayList(); 
    一般类不通过new是不能实例化的,不new的是static的,自动加载的
    接口可以通过其实现接口的类来实例化,
    建议看一看工厂类和抽象工厂类,就会明白其中的道理的
      

  7.   

    只是指向对象的引用吧 子类实现了list接口  可以实例化子类的对象
      

  8.   

    List  list = query.list();  不就是返回List接口吗?接口里面都是没有方法体的,它是怎么调用实现类的方法的?我怎么看不到呢?
      

  9.   

    List list = query.list();前面部分的list表示一个引用,它本身不是方法的存储体,而仅仅是一个指向,
    后面的list()部分,返回的对象,在内存中形成一个真正的你需要调用的方法和属性等的对象,然而它是由前面list指向的
      

  10.   

    帮LZ复习下把!多态分两种:
    1编译时多态:编译时动态重载;
    2运行时多态:指一个对象可以具有多个类型,方法的覆盖
    这样对于对象而言分为:
    理解运行时多态:
    Car c = new Bus();
    Car编译时类型    编译时检查变量类型是否存在,是否有调用的方法
    Bus运行时类型 实际运行是访问heep中的对象,调用实际的方法。
    运行时多态是由运行时类型决定的
    编译时多态是由编译时类型决定的
    猫,小鸟,狗 都是动物,都可以安上动物的标签。
    Interface Animal{}
    Class Car implements Animal{}
    Class Bird implements Animal{}
    Class Dog implements Animal{}
    方法中
    Animal a = new Car();
    Animal b = new Bird();
    Animal c = new Dog();
    运行时多态的三原则
    1.对象不变;(改变的是主观认识)
    2.对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
    在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
    注意:编译时类型一定要为运行时类型的父类或者同类型。
    对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。
    3.动态类型判定实际调用的方法。即它调用覆盖后的方法。
      

  11.   

    使用接口 = 接口的实现类就OK了
    List list = new ArrayList()hibernate中的createQuery的返回值是一个Query对象(query自己命的),通过query.list()可以将返回值转换成为List集合!
      

  12.   

    目前我的认识:
    接口是一个蒙板--->当实际对象产生时,接口覆盖了实际对象的固有方法,保留了接口方法。限制了对象和方法列表的关系!!应该类似---盖住对象自身方法。使映射列表不具有那样的数据
    映射列表
    类对象-------方法地址
    xxx@xxxx      xxxx
    xxx@xxxx      xxxx
      

  13.   

    List list = xxx.getList();
    你可以具体看看xxx对应的类里面的getList方法,在这个方法里面肯定有new ArrayList(), 然后返回它的语句.
    因此, 完全等价于 List list = new ArrayList();
      

  14.   

    接口在开发中运用的非常多,建议学习工厂模式 
    一般类不通过new是不能实例化的,不new的是static的,自动加载的 
    接口可以通过其实现接口的类来实例化, 
    建议看一看工厂类和抽象工厂类,就会明白其中的道理的
      

  15.   

    List list=某个方法返回的List集合;是父类引用指向子类对象,多态的经典表示
    这样的方法经常用到,比如你的方法需要返回一个装满重要数据的List实现类对象
    List是一个接口,但是它内部不是什么也没有,是只定义了方法,而没有实现,具体实现是由子类完成