黑马程序员技术交流社区

标题: 请大神帮我看一题 [打印本页]

作者: 崔累坤    时间: 2015-9-14 21:52
标题: 请大神帮我看一题

请看下面的代码,在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());
                }
               
        }
作者: 铁蛋    时间: 2015-9-14 22:03
  Iterator it = al.iterator();是多态,it是object类型你信不?
作者: sunshine9091    时间: 2015-9-14 22:05
标题: RE: 请大神帮我看一题
你把强转(String)去掉 看下报错 ,就明白了。集合里存的Object对象 赋值给String对象,要强转。编译时,谁知道你里面存的什么呀
作者: Ralap军    时间: 2015-9-14 22:07
本帖最后由 Ralap军 于 2015-9-14 22:46 编辑

不好意思,搞错了,那是泛型,泛型也需要强转。it.next()返回的是Object,需要强制向下转型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2