ArrayList的add方法,参数是object类型?

ArrayList的add方法,参数是object类型?

http://img1.sycdn.imooc.com//climg/5d65def00001992c13660768.jpg

老师,既然ArrayList的add方法,参数是object类型,那是否意味着,我可以在noticeList.add(notice3);这条语句的后面,添加一条noticeList.add("我是一条任意的字符串"); 即添加一个字符串类型的数据。因为字符串也是object的子类啊。但是这样的话,整个noticeList里面的数据类型就不一致了,这是怎么回事?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、这样定义后,我们在进行集合中遍历获取元素时,会出现报错信息的,所以在集合中,这样使用是不正确的~也就是说在进行添加元素时,可以添加Object所有子类类型,但是在获取时就会因为类型转换异常而出现报错信息,所以在进行集合使用时,不要添加多个类型。因为添加的类型不同所以获取集合内容时,无法强制转换。

2、因为String类型没有定义getTitle()方法,而其他对象需要获取getTitle()方法,所以for循环中无法统一处理,也就无法得到这个字符串信息。

例如如下代码:

http://img1.sycdn.imooc.com//climg/5d662a040001fc1d06460292.jpg

输出信息:

http://img1.sycdn.imooc.com//climg/5d662a5d0001e22b07800184.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕酷酷 2019-08-28 11:30:31

同学你好,添加noticeList.add("我是一条任意的字符串"); 即添加一个字符串类型的数据。因为字符串是object的子类,所以可以添加到List集合中,List集合是一个Object类型的集合,所以在add方法中可以添加所有Object类型的子类,另外,我们也通过add方法的源码可以知道ArrayList的底层其实是一个Object类型数组,Object类型数组是可以存储所有属于Object类型的元素的,类似于如下代码:

http://img1.sycdn.imooc.com//climg/5d65f4c300014a3606680195.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 天才少年25 #1
    可是这样的话,noticeList里面的数据类型就两种了,那么用for循环进行遍历的时候,就要改吗?因为字符串没有定义getTitle方法。
    2019-08-28 14:47:07
  • 提问者 天才少年25 #2
    可是这样的话,noticeList里面的数据类型就两种了,那么用for循环进行遍历的时候,就要改吗?因为字符串没有定义getTitle方法。
    2019-08-28 14:47:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师