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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔累坤 中级黑马   /  2015-9-14 21:52  /  398 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


请看下面的代码,在while遍历里,为什么还要做String s = (String)it.next()呢,我存的本来就是字符串啊,怎么还要强转呢???


public static void main(String[] args)
        {
                ArrayList al = new ArrayList();

                al.add("abc356");
                al.add("abc3543");
                al.add("abc126");
                al.add("abc0897");

                Iterator it = al.iterator();
                while (it.hasNext())
                {
                        String s = (String)it.next();

                        System.out.println(s+"...."+s.length());
                }
               
        }

评分

参与人数 1黑马币 +10 收起 理由
sunshine9091 + 10 赞一个!

查看全部评分

3 个回复

倒序浏览
  Iterator it = al.iterator();是多态,it是object类型你信不?

评分

参与人数 1黑马币 +10 收起 理由
sunshine9091 + 10 赞一个!

查看全部评分

回复 使用道具 举报 1 0

RE: 请大神帮我看一题

你把强转(String)去掉 看下报错 ,就明白了。集合里存的Object对象 赋值给String对象,要强转。编译时,谁知道你里面存的什么呀
回复 使用道具 举报
本帖最后由 Ralap军 于 2015-9-14 22:46 编辑

不好意思,搞错了,那是泛型,泛型也需要强转。it.next()返回的是Object,需要强制向下转型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马