视频中的noticeList为什么能强制转成Notice类?

视频中的noticeList为什么能强制转成Notice类?

视频中的noticeList是通过

ArrayList noticeList = new ArrayList();

定义的,为什么能强转成Notice类?

正在回答 回答被采纳积分+1

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

4回答
PPJZKJ 2020-03-02 17:26:09

没有强转noticeList,转的是noticeList.get(i)

noticeList.get(i)得到的是noticeList里面储存的对象但是返回出来Object类的,不能访问储存的对象特有的成员,所以才强转成储存对象本身的类型的。

橘猫铲屎官 2020-02-26 15:47:23

因为ArrayList add进去的是Object对象,Object是所有的父类,所以可以强转为Notice

好帮手慕柯南 2020-02-16 14:53:43

同学你好!

  1. ArrayList的add方法需要存入的就是Object类型,由于所有的类默认都继承Object类,因此Object类型的引用可以执行Notice的对象。因此可以存入。这是多态的一种体现

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

  2. get方法返回的也是一个Object类型,所以需要进行强转

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

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

提问者 慕数据0164170 2020-02-16 10:16:21

看了一下,因为是用存进去的对象强制转换的,所以没报错,但是又有一个问题:存进去的notice1/2/3都是Notice类型的,为什么取出的时候就成了Object类型的,需要强制类型转换了?

  • 这里面涉及到泛型的知识,你可以先往后听。 简单的说: ArrayList ArrayList = new ArrayList();你写的这段代码 1. 并没有告诉集合你要存储的数据类型。所以集合无法判断你要存储的数据是什么类型的,故存储任何数据类型都可以。 2. 不知道你存储的数据类型是什么,就更不可能知道你要取出数据的类型是什么,所以用Object类来接收,具体类型你需要强制转换。
    2020-02-17 19:23:31
  • 集合还有一种定义方式,就是在创建集合的同时,告诉集合我要存储的数据类型 ArrayList<Employee> ArrayList = newArrayList(); 表示此集合只能存储Employee类型的数据,其它类型数据不可以,取出的时候也不用强制转换。
    2020-02-17 19:26:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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