解决方案 »

  1.   

    getFirst removeLast是Linkedlist的方法 而不是List的方法 所以会找不到
    ps 都用上Linkedlist了 就用个IDE吧 别用记事本了
      

  2.   

    你现在的声明类型是List而不是LinkedList,即使它真实的类型是LinkedList,你仍然没法用LInkedList里面才有的方法。好比,我现在说:“明天会有个人过来”,即使来的人确实是个“男的Java程序员”,你在仅仅知道“人”的情况下,没法做出以下任何一个结论:
    他可以去男厕所
    可以让他写Java程序
    ...只有在我明确告诉你“明天会有个男的Java程序员过来”,你才能得出上述的结论。
    同样,你也只有明确告诉编译器,你的对象的类型是LinkedList,编译器才能让你用LinkedList的方法。如果你仅仅告诉编译器,它是个List(哪怕实际类型确实是LinkedList),编译器也不会让你用仅在LinkedList里面定义的方法
      

  3.   

    List L = new LinkedList();
    改为
    LinkedList L = new LinkedList();
      

  4.   

    如果没有其它方面的约束的话。直接改为LinkedList L = new LinkedList();就好了。
      

  5.   

    Java的接口不是支持动态绑定吗?LinkedList集成List吗?
      

  6.   

    Java的动态绑定不就是这个么,难道不行
      

  7.   

    Java的接口不是支持动态绑定吗?LinkedList集成List吗?
    你还是没看懂我举的例子。
      

  8.   

    Java的接口不是支持动态绑定的吗?父类引用指向子类,运行时更具实际的对象调用对象自己的方法
      

  9.   

    你现在还没到运行时,现在是语法错误。List接口没有提供first, last系列方法。所以,你声明的类型(也就是等号左边的类型)不能是List,而只能是LinkedList反过来,你提到的运行时:假设:
    public class MyLinkedList extends LinkedList {
       public Object removeLast() {
          System.out.println("不可以删除最后一个!!!");
          return null;
       }
    }
    这个时候,随便你声明具体的类,还是LinkedListLinkedList list = new MyLinkedList();
    list.add("1234");
    list.add("5678");
    list.removeLast();编译都能通过,且在运行时,会执行你所谓的“动态绑定”。再把我的例子复述一遍:
    今天(编译期,对应javac命令执行的时间),当我(代码)对你(编译器对应javac命令)说:“明天,有个人(List)要来”,你(编译器)只知道他是个人(List)——插一句,编译器还没智能到能够分析代码,这个即没必要,也不可靠,所以,即使就在等号后面马上出现了真实类型。如果这个时候(还是编译期),我(代码)对你(编译器)说:“你带这个人(List)去男厕所(执行removeLast方法)”,你(编译器)会傻傻地拒绝(编译错误),说:“我不知道他是不是个男人(LinkedList),不能让这个人(List)去做只有男人(LinkedList)才能做的事情”。这个时候(编译期),我(代码)只能改口(改掉你错误代码)说:“明天,有个男人(声明类型,也就是等号左边那个类型)要来,你带他去男厕所(执行removeLast)”。这个时候,你(编译器)会很高兴的确认我给你的任务(编译通过)到了第二天(运行期,对应java命令执行的时间),那个人来了,检查无误,果然是个男人,而且还是个帅哥(男人的子类,好比上面MyLinkedList)。反正不管是帅哥也好,糟老头(其他LinkedList子类)也罢,反正一定是个男人,一定能去男厕所(执行在在LinkedList中定义过的removeLast方法)。
      

  10.   

    然后,漏了楼主的“动态绑定”,也就是多态:
    进了男厕所,不同的男人(不同子类)有不同的表现,有的唱歌,有的有前列腺,因而慢腾腾,还有小孩子的直接拉在了裤子上(抛exception)。具体怎么样的表现,现在(编译期)你没法知道,只有到明天,进了男厕所(运行期)才知道