作者jtorngl (tou)
站内java
标题[问题] 请问一个Collection的问题
时间Wed Jul 2 21:49:00 2008
import java.util.*;
public class ArrayListDemo {
public static void main(String[] args) {
List lists = new LinkedList();
lists.add("abc");
lists.add(new Integer(3));
lists.add("def");
lists.add(new Integer(3));
System.out.println(lists);
Iterator it = lists.iterator();
while(it.hasNext()) {
if(it.next() instanceof String) {
String str = (String)it.next();
System.out.println(str);
}
else if(it.next() instanceof Integer) {
Integer integer = (Integer)it.next();
System.out.println(integer);
}
//System.out.println(it.next() instanceof String);
//System.out.println(it.next() instanceof Integer);
}
}
}
请问在未用泛型时,利用Iterator照顺序取出List内的物件
要使用该物件的功能时必须自己转型回物件原本的型态
那我用instanceof来一一检查该物件是否为某个型态再转型
可是执行时会出现ClassCastException
因为这个范例只有String和Integer物件,我也一一检查了
请问为什麽在转型时还是失败了呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.52.188
1F:推 tkcn:先在 API 看清楚 next() 的说明吧 07/02 22:07
※ 编辑: jtorngl 来自: 124.8.52.188 (07/02 22:19)
2F:→ jtorngl:在While内我先 Object obj = it.next(); 07/02 22:24
3F:→ jtorngl:然後後面的it.next()全改成obj,所以是我乱用it.next() ? 07/02 22:26
4F:→ jtorngl:next()会回传一个E type的element,这里的E指的是Object吧 07/02 22:50
5F:推 slalala:光字面上的意义 就可以了解那是会往下跳一个element了 07/02 23:25
6F:推 slalala:it.haseNext回传boolean 你可试试看while(true)能看到什麽 07/02 23:27
7F:推 lth5:因为你比对的和转型的是不同的物件 07/02 23:51
8F:推 svenlee:每it.next() 就会跳到下一个object,你多呼叫太多次 07/03 16:16