黑马程序员技术交流社区
标题:
探讨下,迭代器的强制转换和List通过get方法再强制转换
[打印本页]
作者:
heima_xyu
时间:
2014-7-1 09:29
标题:
探讨下,迭代器的强制转换和List通过get方法再强制转换
public class Demo {
/**
* 3、 ArrayList<Integer> list = new ArrayList<Integer>();
* 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
* @param args
*/
private static ArrayList<Integer> list = new ArrayList<Integer>();
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class c=Test3.class;
Field f=c.getDeclaredField("list");
Class clazz=f.getType();
Method method=clazz.getMethod("add", Object.class);
method.invoke(list, "字符串");
for(Object obj:list)
{
System.out.println(obj);
}
}
}
复制代码
上述是使用反射完成的,不必去看,下面是正文:
public class Demo {
/**
* 3、 ArrayList<Integer> list = new ArrayList<Integer>();
* 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
//将该列表使用迭代器封装,迭代器是List特有的ListIterator
ListIterator listit=list.listIterator();
//使用迭代器ListIterator的add方法,存放字符串
listit.add("字符串");
//打印该字符串进行试验
System.out.println(listit.previous().toString());
System.out.println(list.get(0).toString());
}
}
/*
* 最好两个打印语句,迭代器的强转可以,而通过get会抛出强转类型异常,当然迭代器
* 可以不需要toString()就能打印出“字符串”。奇怪的是:为什么通过toString
* 不能将元素转换为字符串。
* */
复制代码
再比较下这个:如下
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
//将该列表使用迭代器封装,迭代器是List特有的ListIterator
//ListIterator listit=list.listIterator();
//使用迭代器ListIterator的add方法,存放字符串
// listit.add("字符串");
//打印该字符串进行试验
//System.out.println(listit.previous().toString());
System.out.println(list.get(0).toString());
}
}
复制代码
这个能通过,打印3:
我得出的结论,调用get()提取元素,再调用toString(),集合难道会先检查元素的类型是否属于泛型,才能调用toString()???
作者:
heima_xyu
时间:
2014-7-1 18:31
{:3_47:}没人回。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2