黑马程序员技术交流社区
标题:
ArrayList开发时,遇到的问题
[打印本页]
作者:
我不信命ZW
时间:
2015-4-25 17:48
标题:
ArrayList开发时,遇到的问题
一、源代码:
package p4.bean;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add(new Person("张三1",21)); //第一处
a1.add(new Person("张三2",22));
a1.add(new Person("张三3",23));
a1.add(new Person("张三4",24));
Iterator it = a1.iterator();
System.out.println(it.next().getClass());
while(it.hasNext()){
Person p = (Person)it.next(); //第二处
System.out.println(p.getName()+"--"+p.getAge());
}
}
}
二、输出结果:
class p4.bean.Person //第三处
张三2--22
张三3--23
张三4--24
三、问题?
问题一:第一处是不是涉及多态中的向上转型过程,由Person类转为Object类吗?
问题二:看了毕向东的基础视频时发现,既然说第二处代码涉及向下转型,为什么第三处输出的结果却是Person类。也就是说集合当中存储的是Person对象?那么第二处Person p = (Person)it.next();只能解释为已经为将Person类型对象强制转换成Person类型对象,否则该怎么解释?
好困惑啊?那位大神能帮帮我吗?:dizzy::D
作者:
jiangwenjun
时间:
2015-4-25 20:04
第一处是因为迭代器的next方法返回值类型是Object,所以要记得类型转换。
第三处是输出 字节码类名
作者:
我不信命ZW
时间:
2015-4-25 20:42
jiangwenjun 发表于 2015-4-25 20:04
第一处是因为迭代器的next方法返回值类型是Object,所以要记得类型转换。
第三处是输出 字节码类名 ...
谢谢,这样就讲得通了。:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2