A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 明日辉煌 于 2014-5-27 22:21 编辑

迭代器的next方法的返回类型为什么是Object的呢?

10 个回复

倒序浏览
因为使用到泛型,所以不能确定返回什么类型,所以就返回Object对象
回复 使用道具 举报
l楼上说的对,引入泛型之后就不会返回Objectl类型
引入泛型将运行时期出现问题ClassCastException,转移到了编译时期,方便于程序员解决问题。让运行时问题减少,安全。
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                
  4.                 ArrayList<String> al = new ArrayList<String>();
  5.                         al.add("aa");
  6.                         al.add("aaa");
  7.                         al.add("aaa");
  8.                         al.add("aad");
  9.                         Iterator<String> it = al.iterator();
  10.                         System.out.println("原集合");
  11.                         while(it.hasNext()){
  12.                                 System.out.println(it.next());
  13.                         }
  14.                         System.out.println("------
  15.         }
复制代码

               

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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());
        }
回复 使用道具 举报 1 0
因为返回对象的不确定性,所以就返回基类了
回复 使用道具 举报
链表的泛型问题  Object是所有类的父类  所以不知道泛型时用Object就可以避免出错
回复 使用道具 举报
because Object 包罗万象 ,你也不知道下一次要操作的是什么类型的对象。你也可以使用泛型明确返回值的类型。
回复 使用道具 举报
an1911 发表于 2014-5-27 10:41
next方法,返回的是集合的元素,而集合元素的类型可以是任意类型的,有不确定性,而为了达到代码的通用性, ...

好的,讲的很详细,谢谢了!
回复 使用道具 举报
嗯,我也了解了
回复 使用道具 举报
任何根基类都是Object,在不确定类型的情况下,返回的都是Object,用泛型可以控制返回的具体类型,然后具体操作
回复 使用道具 举报
an1911 发表于 2014-5-27 10:41
next方法,返回的是集合的元素,而集合元素的类型可以是任意类型的,有不确定性,而为了达到代码的通用性, ...

说的不错,简单易懂。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马