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

© sunshine9091 中级黑马   /  2014-8-7 07:55  /  3727 人查看  /  37 人回复  /   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());
                }
               
        }

37 个回复

正序浏览
知识回顾,存储的是什么类型,就返回什么类型
回复 使用道具 举报
路过,受教了
回复 使用道具 举报
准备42期,还没走完流程呢
回复 使用道具 举报
路过~~~~~
回复 使用道具 举报
楼主可是传智java0715基础班同学?:lol
回复 使用道具 举报
这是一个向下转型的操作,Object包括String,所以是向下转型,反之是向上转型。
回复 使用道具 举报
泛型的问题~
回复 使用道具 举报
加泛型就行了  就不用强转了
回复 使用道具 举报
因为
Iterator it = al.iterator();//这句话it现在是Object类型
所以下面使用到it的时候,需要强制类型转换成String类型。
回复 使用道具 举报
我的建议是把强转(String)去掉,应该就差不多了
回复 使用道具 举报
说白了就是你没加泛型
回复 使用道具 举报
Object obj = it.next();
String s = (String)obj;
遍历传回的是Object,肯定要向下转型
回复 使用道具 举报
F@C 中级黑马 2014-8-7 14:45:03
21#
进来学习
回复 使用道具 举报
Hey丶小黑 发表于 2014-8-7 11:08
哎呀,这位美女,你要进哪期呀,无情搭讪。

哈哈哈哈。。。
回复 使用道具 举报
List里面取出的都Object类型,你直接赋值给String类型,肯定不行,得强制转换
回复 使用道具 举报
草鱼狂飙 发表于 2014-8-7 08:11
你存入是字符串,但是存入arraylist之后变为object,再次取出后就是object,肯定需要强制转换;
arraylist ...

嗯嗯,说的很对,就是这样的。
回复 使用道具 举报
路过~~~   
回复 使用道具 举报
李文方 发表于 2014-8-7 09:38
你知道,并不代表编译器就知道啊,它只按规矩办事,it.next()返回的是Object类型,而你需要的是String 类型 ...

哎呀,这位美女,你要进哪期呀,无情搭讪。
回复 使用道具 举报
看看了评论,学习了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马