黑马程序员技术交流社区
标题:
问一个强转的类型
[打印本页]
作者:
蔡汉康
时间:
2012-10-21 11:32
标题:
问一个强转的类型
本帖最后由 蔡汉康 于 2012-10-21 15:48 编辑
今天看视频ArrayList练习2有个地方看不懂,请教一下.
前面创建了一个
class Person
{
........
}
ArrayList al=new ArrayList();
al.add(new Person("lisi001",30));
al.add(new Person("lisi002",32));
al.add(new Person("lisi003",33));
al.add(new Person("lisi004",31));
Iterator it=al.iterator();
while(it.hasNext())
{
Object obj=it.next();
Person p=(Person)obj;
请问这里为什么需要强转,Person和Object是什么关系
sop("");
}
作者:
杨政
时间:
2012-10-21 11:44
Person p = 创建的是Person对象,obj是Object类型,所以要强转
Object是所有类的父类,当然也是Person的父类.
作者:
给生活加点料
时间:
2012-10-21 12:57
这段代码里,迭代器接受的是Object对象。所以你需要将这里的对象强转成Person对象。
以后你接触到泛型,在指定时指定泛型类型,就不必再强转了。
作者:
鲁中需
时间:
2012-10-21 13:35
1.ArrayList是一个集合容器,可以装任何同一类型的对象,没有使用泛型之前,为了满足可以装任何对象,定义add方法时传入的参数是object;同样得到的迭代器 Iterator it=al.iterator(); 返回迭代的下一元素方法(next()),返回类型也是object,但该示例中装入的是Person类,迭代出的虽是Person类,但编译器并不知,只能先用Object接受再转型,否则会出错。
2.java5.0版本之后引入了泛型,它在编译时进行类型安全检查,并且在运行时所有的转换都是强制的隐式的,大大提高了代码的安全。
作者:
陈琦
时间:
2012-10-21 15:35
在你添加元素的时候,它会默认的把你添加的元素向上转型为Object的引用,因为Object是所有类的父类
作者:
唐进
时间:
2012-10-21 15:43
范型是给编译器看的,所以迭代的时候返回的是Object类型,需要把它转换成你之前存到集合里的类型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2