list接口的likedlist容器类找不到方法

问题描述

我用list接口构造了linkedlist的容器类,构造一个链表,调用linkedlist的getFirst()和remove()方法,变异竟然提示找不到该方法,我仔细查找了java技术文档,上面明明有啊,但是变异还是说找不到该方法。是不是我的jdk版本过时了,我的jdk是1.6版本的,下面是代码和调试结果:importjava.util.*;publicclassTestLinkedList{publicstaticvoidmain(String[]args){ListL=newLinkedList();for(inti=0;i<9;i++)L.add("周"+i);System.out.println(L);System.out.println(L.getFirst());//获取list头元素System.out.println(L.indexOf("周1"));L.add(7,"周100");L.removeLast();//删除最后一个元素System.out.println(L);Collections.shuffle(L);System.out.println(L);Collections.sort(L);System.out.println(L);System.out.println(Collections.binarySearch(L,"周100"));}}

解决方案

解决方案二:
getFirstremoveLast是Linkedlist的方法而不是List的方法所以会找不到ps都用上Linkedlist了就用个IDE吧别用记事本了
解决方案三:
你现在的声明类型是List而不是LinkedList,即使它真实的类型是LinkedList,你仍然没法用LInkedList里面才有的方法。好比,我现在说:“明天会有个人过来”,即使来的人确实是个“男的Java程序员”,你在仅仅知道“人”的情况下,没法做出以下任何一个结论:他可以去男厕所可以让他写Java程序...只有在我明确告诉你“明天会有个男的Java程序员过来”,你才能得出上述的结论。同样,你也只有明确告诉编译器,你的对象的类型是LinkedList,编译器才能让你用LinkedList的方法。如果你仅仅告诉编译器,它是个List(哪怕实际类型确实是LinkedList),编译器也不会让你用仅在LinkedList里面定义的方法
解决方案四:
ListL=newLinkedList();改为LinkedListL=newLinkedList();
解决方案五:
如果没有其它方面的约束的话。直接改为LinkedListL=newLinkedList();就好了。
解决方案六:
引用1楼secret32的回复:

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

Java的接口不是支持动态绑定吗?LinkedList集成List吗?
解决方案七:
引用楼主jackzhouyu的回复:

我用list接口构造了linkedlist的容器类,构造一个链表,调用linkedlist的getFirst()和remove()方法,变异竟然提示找不到该方法,我仔细查找了java技术文档,上面明明有啊,但是变异还是说找不到该方法。是不是我的jdk版本过时了,我的jdk是1.6版本的,下面是代码和调试结果:importjava.util.*;publicclassTestLinkedList{publicstaticvoidmain(String[]args){ListL=newLinkedList();for(inti=0;i<9;i++)L.add("周"+i);System.out.println(L);System.out.println(L.getFirst());//获取list头元素System.out.println(L.indexOf("周1"));L.add(7,"周100");L.removeLast();//删除最后一个元素System.out.println(L);Collections.shuffle(L);System.out.println(L);Collections.sort(L);System.out.println(L);System.out.println(Collections.binarySearch(L,"周100"));}}

Java的动态绑定不就是这个么,难道不行
解决方案八:
引用5楼jackzhouyu的回复:

Quote: 引用1楼secret32的回复:
getFirstremoveLast是Linkedlist的方法而不是List的方法所以会找不到ps都用上Linkedlist了就用个IDE吧别用记事本了

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

你还是没看懂我举的例子。
解决方案九:
引用2楼shine333的回复:

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

Java的接口不是支持动态绑定的吗?父类引用指向子类,运行时更具实际的对象调用对象自己的方法
解决方案十:
你现在还没到运行时,现在是语法错误。List接口没有提供first,last系列方法。所以,你声明的类型(也就是等号左边的类型)不能是List,而只能是LinkedList反过来,你提到的运行时:假设:publicclassMyLinkedListextendsLinkedList{publicObjectremoveLast(){System.out.println("不可以删除最后一个!!!");returnnull;}}

这个时候,随便你声明具体的类,还是LinkedListLinkedListlist=newMyLinkedList();list.add("1234");list.add("5678");list.removeLast();

编译都能通过,且在运行时,会执行你所谓的“动态绑定”。再把我的例子复述一遍:今天(编译期,对应javac命令执行的时间),当我(代码)对你(编译器对应javac命令)说:“明天,有个人(List)要来”,你(编译器)只知道他是个人(List)——插一句,编译器还没智能到能够分析代码,这个即没必要,也不可靠,所以,即使就在等号后面马上出现了真实类型。如果这个时候(还是编译期),我(代码)对你(编译器)说:“你带这个人(List)去男厕所(执行removeLast方法)”,你(编译器)会傻傻地拒绝(编译错误),说:“我不知道他是不是个男人(LinkedList),不能让这个人(List)去做只有男人(LinkedList)才能做的事情”。这个时候(编译期),我(代码)只能改口(改掉你错误代码)说:“明天,有个男人(声明类型,也就是等号左边那个类型)要来,你带他去男厕所(执行removeLast)”。这个时候,你(编译器)会很高兴的确认我给你的任务(编译通过)到了第二天(运行期,对应java命令执行的时间),那个人来了,检查无误,果然是个男人,而且还是个帅哥(男人的子类,好比上面MyLinkedList)。反正不管是帅哥也好,糟老头(其他LinkedList子类)也罢,反正一定是个男人,一定能去男厕所(执行在在LinkedList中定义过的removeLast方法)。
解决方案十一:
然后,漏了楼主的“动态绑定”,也就是多态:进了男厕所,不同的男人(不同子类)有不同的表现,有的唱歌,有的有前列腺,因而慢腾腾,还有小孩子的直接拉在了裤子上(抛exception)。具体怎么样的表现,现在(编译期)你没法知道,只有到明天,进了男厕所(运行期)才知道
解决方案十二:
引用9楼shine333的回复:

你现在还没到运行时,现在是语法错误。List接口没有提供first,last系列方法。所以,你声明的类型(也就是等号左边的类型)不能是List,而只能是LinkedList反过来,你提到的运行时:假设:publicclassMyLinkedListextendsLinkedList{publicObjectremoveLast(){System.out.println("不可以删除最后一个!!!");returnnull;}}

这个时候,随便你声明具体的类,还是LinkedListLinkedListlist=newMyLinkedList();list.add("1234");list.add("5678");list.removeLast();

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

了解!我吧动态绑定搞错啦,动态绑定只针对重写的方法

时间: 2024-08-01 00:03:58

list接口的likedlist容器类找不到方法的相关文章

win7-IDropSourceNotify接口在vs2005中找不到

问题描述 IDropSourceNotify接口在vs2005中找不到 win7系统,vs2005编译工具,在oleidl.h文件中找不到相应的IDropSourceNotify接口,想问下该怎么办,另外就是DROPIMAGETYPE结构等,在Shlobj.h中都找不到,希望那们大侠给点解决方法 解决方案 下SDK看看http://www.microsoft.com/en-us/download/details.aspx?id=8279

ttp ervlet esponse-HttpServletResponse对象获取头信息,报错找不到方法

问题描述 HttpServletResponse对象获取头信息,报错找不到方法 源码: JSONObject returnJson = JSONObject.fromObject(json); response.setContentType("text/html;charset=utf-8"); if(!"0".equals(returnJson.get("code"))){ response.setHeader("McAuditRes

网易新闻选择列表里面的cell移动怎么做,自己找了一个方法,但是不怎么会用, 求各位大神帮忙。

问题描述 网易新闻选择列表里面的cell移动怎么做,自己找了一个方法,但是不怎么会用, 求各位大神帮忙. -collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{} 解决方案 看下帮助文档,有函数参数的

struts1中报找不到方法错误,急求解

问题描述 我用的是struts1+spring+jap搭建的框架,但是在调用里面的方法的时候报找不到方法 我测试了很多次 确定方法是对的,是继承了的DispatchAction的类找不到方法,我在其他类中继承了Action的找得到方法(这里面我重写的execute),我不明白为什么继承了DispatchAction类找不到方法,很是纠结--希望大家帮助,谢谢了--代码下面: 问题补充:我的路径是:http://192.168.1.13:8080/control/user/manage.do?me

css-CSS中页面缩小的时候右边会留白,恼人,网上找了好多方法没用。

问题描述 CSS中页面缩小的时候右边会留白,恼人,网上找了好多方法没用. 先上代码: <body> <div class="header color1"> <p>aaa</p> </div> <div class="adv-box color2"> Fill up later! </div> <div class="bg-box "> aaa <

eclipse 为何没有自动提示对象(实现接口同时继承抽象类)的所有方法?

问题描述 eclipse 为何没有自动提示对象(实现接口同时继承抽象类)的所有方法? PS: 其他普通对象(例如 String 对象)有提示对象的所有方法. public interface BaseDao { ... } public abstract class BaseDaoImpl implements BaseDao {... } public interface BookDao extends BaseDao {... } public class BookDaoImpl exten

solr-在线等Solr的query找不到方法

问题描述 在线等Solr的query找不到方法 package com.solr.demo.test; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest.METHOD; import org.apache.solr.c

pymongo-mongodb连接python出现错误,找不到方法

问题描述 mongodb连接python出现错误,找不到方法 我的是ubuntu系统,上面装的是python2.7,配置了virtualenv环境,在该环境内安装了mongodb(版本2.4.9),也装了pymongo(版本3.0.2),在连接数据库的时候写了下面代码: from mongoengine import * import pymongo connection = pymongo.Connection('localhost',27017) #或者下面的也是同样的错误提示 from p

pring 动态代理-Quartz怎么能不实现job接口而自己指定要执行的方法(就像sping中的那样)

问题描述 Quartz怎么能不实现job接口而自己指定要执行的方法(就像sping中的那样) 如题 这次代码中没用到spring 因此以前在spring中用下列方式实现 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> run 的如今不能用了 怎么才能简单的做使得quartz直接调用自己指定的方法而不是 必须要继承Job实现execute()方法 解决方案 写一个代理