为了账号安全,请及时绑定邮箱和手机立即绑定

列表与ArrayList作为参考类型?

列表与ArrayList作为参考类型?

德玛西亚99 2019-09-02 20:35:58
好的,所以我知道Set,List并且Map是接口,但是什么使得第一行代码比第二行更好?List myArr = new ArrayList();ArrayList myArr = new ArrayList();
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

如果您使用第一个表单,则表示您将要使用的所有内容都是List接口的功能- 没有别的,特别是任何实现它都没有额外添加。这意味着你可以很容易地改变所使用的实现(例如,刚刚替补LinkedList用于ArrayList在实例化),而不用担心它打破了代码的其余部分,因为你可能已经用具体的东西ArrayList


查看完整回答
反对 回复 2019-09-02
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

ArrayList 这里的源代码可以看出,实现的大部分方法都是注释的,@override因为所有这些方法都是通过List接口定义的,如果你只使用基本功能(那就是你大部分时间都要做的)差异不会是任何实际的差异。

如果有一天你会认为它的特征ArrayList不再适用于你的问题并且你需要不同的东西(LinkedList例如),那么差异就会到来。如果您将所有内容声明为List实例化,ArrayList则可以通过更改实例化来轻松切换到新实现,new ArrayList()而在其他情况下,您还必须更改所有变量声明。

使用List list = new ArrayList()更多OOP样式,因为您声明您不关心列表的特定实现,并且您想要丢弃有关该类型的静态信息,因为您将依赖于此类集合提供的接口从其中抽象出来实现。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 445 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号