A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈腾跃 黑马帝   /  2012-2-19 22:49  /  2251 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈腾跃 于 2012-2-20 20:51 编辑

其实只是作为分享,但是还是想知道原因:
  1. import java.util.*;
  2. public class ListIteratorDemo {
  3.         public static void main(String[] args)
  4.         {
  5.                 ArrayList list = new ArrayList();
  6.                
  7.                 list.add("list1");
  8.                 list.add("list2");
  9.                 list.add("list3");
  10.                 list.add("list4");
  11.                
  12.                 ListIterator lit = list.listIterator();
  13.                
  14.                 while(lit.hasNext())
  15.                 {
  16.                         String s = (String)lit.next();
  17.                         if(s.equals("list2"))
  18.                                 lit.add("add_list");
  19.                                
  20.                         System.out.println("s="+s);
  21.                 }               
  22.                 System.out.println(list);

  23.    }
  24. }       
复制代码
结果显示:
F:\java\workspace>javac ListIteratorDemo.java
ListIteratorDemo.java:14: 不兼容的类型
找到: java.util.ListIterator
需要: ListIterator
                ListIterator lit = list.listIterator();
                                                    ^
………………………………
4 错误

解决方法很简单,只要导入包的时候写成:
import java.util.ArrayList;
import java.util.ListIterator;
便可

问题是看毕老师也是导入的“import java.util.*”就可以编译通过呀?(难道和jdk版本有关?也不对,1.2版就有list的迭代器呀)

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

7 个回复

倒序浏览
“import java.util.*”只是少了个“;”,编译可通过呀,你的 JDK什么版本?很有可能是,你的目录下有一文件:ListIterator.java,或曾建过ListIterator类,有ListIterator.class。

PS: 我测试过,建一 ListIterator.java文件,里面是ListIterator类,编译出现如你据说的错误,还提示方法 hasNext()、next()、add(java.lang.String)找不到符号,因自建的ListIterator类没这些方法。而改成你“解决方法很简单,……”,则编译通过。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 分很高了,到时候有额外奖励哦!.

查看全部评分

回复 使用道具 举报
01.import java.util.*

少了分号“;”,应该是包没到成功吧。
回复 使用道具 举报
楼主少了;你再试试看
回复 使用道具 举报
个人感觉可能是在你的工程下有一个ListIterator的类。
回复 使用道具 举报
【专】【属】 发表于 2012-2-20 14:46
个人感觉可能是在你的工程下有一个ListIterator的类。

你的感觉很准,但是我把ListIterator的类注释掉后,问题依旧!所以应该关系不大
回复 使用道具 举报
陈腾跃 黑马帝 2012-2-20 20:52:49
7#
黄秋 发表于 2012-2-20 02:51
“import java.util.*”只是少了个“;”,编译可通过呀,你的 JDK什么版本?很有可能是,你的目录下有一文 ...

非常感谢,分号是我落下的,加上分号问题依旧,可能我的JDK有什么问题吧!
回复 使用道具 举报
黄秋 黑马帝 2012-2-20 21:57:32
8#
陈腾跃 发表于 2012-2-20 20:51
你的感觉很准,但是我把ListIterator的类注释掉后,问题依旧!所以应该关系不大 ...

  要把ListIterator的类、文件删掉(或改名),特别是 ListIterator.java文件,这文件你不删,编译时会生成ListIterator.class。
  或者,把:ListIterator lit = list.listIterator();
改成:java.util.ListIterator lit = list.listIterator(); --- 可行,因ListIterator 不是用你的ListIterator类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马