黑马程序员技术交流社区
标题:
迭代器的next方法的返回类型为什么是Object的呢
[打印本页]
作者:
明日辉煌
时间:
2014-5-27 08:19
标题:
迭代器的next方法的返回类型为什么是Object的呢
本帖最后由 明日辉煌 于 2014-5-27 22:21 编辑
迭代器的next方法的返回类型为什么是Object的呢?
作者:
喜爱
时间:
2014-5-27 09:06
因为使用到泛型,所以不能确定返回什么类型,所以就返回Object对象
作者:
Dark_Horse
时间:
2014-5-27 09:14
l楼上说的对,引入泛型之后就不会返回Objectl类型
引入泛型将运行时期出现问题ClassCastException,转移到了编译时期,方便于程序员解决问题。让运行时问题减少,安全。
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> al = new ArrayList<String>();
al.add("aa");
al.add("aaa");
al.add("aaa");
al.add("aad");
Iterator<String> it = al.iterator();
System.out.println("原集合");
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("------
}
复制代码
作者:
an1911
时间:
2014-5-27 10:41
next方法,返回的是集合的元素,而集合元素的类型可以是任意类型的,有不确定性,而为了达到代码的通用性,直接指定返回的是Object类型(当然楼上,是使用范型先把集合的类型个规定好了,适用在确定集合中元素类型的情况下,同时能够方便及时检查错误,如果不是我们规定的范型类型会在编写代码时候直接报错误,提高代码的安全性)
下面实例代码就是表示集合元素可以是任意类型,所以next也无法确定具体某一类型,只能返回Object类型,达到代码的通用性
ArrayList al = new ArrayList();
al.add("aa");//String类型
al.add(123);//int类型
al.add('1');//字符
al.add(12.3);//浮点
al.add(new Object());
Iterator it = al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
作者:
yuZhe_toString
时间:
2014-5-27 12:09
因为返回对象的不确定性,所以就返回基类了
作者:
More
时间:
2014-5-27 19:12
链表的泛型问题 Object是所有类的父类 所以不知道泛型时用Object就可以避免出错
作者:
toselect
时间:
2014-5-27 21:37
because Object 包罗万象 ,你也不知道下一次要操作的是什么类型的对象。你也可以使用泛型明确返回值的类型。
作者:
明日辉煌
时间:
2014-5-27 22:20
an1911 发表于 2014-5-27 10:41
next方法,返回的是集合的元素,而集合元素的类型可以是任意类型的,有不确定性,而为了达到代码的通用性, ...
好的,讲的很详细,谢谢了!
作者:
何堂红
时间:
2014-5-28 00:02
嗯,我也了解了
作者:
KevinSmart
时间:
2014-5-29 16:53
任何根基类都是Object,在不确定类型的情况下,返回的都是Object,用泛型可以控制返回的具体类型,然后具体操作
作者:
茂子
时间:
2014-5-30 09:12
an1911 发表于 2014-5-27 10:41
next方法,返回的是集合的元素,而集合元素的类型可以是任意类型的,有不确定性,而为了达到代码的通用性, ...
说的不错,简单易懂。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2