列表与ArrayList作为参考类型?

好的,所以我知道Set,List并且Map是接口,但是什么使得第一行代码比第二行更好?


List myArr = new ArrayList();

ArrayList myArr = new ArrayList();


德玛西亚99
浏览 446回答 3
3回答

慕盖茨4494581

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

慕姐4208626

从ArrayList 这里的源代码可以看出,实现的大部分方法都是注释的,@override因为所有这些方法都是通过List接口定义的,如果你只使用基本功能(那就是你大部分时间都要做的)差异不会是任何实际的差异。如果有一天你会认为它的特征ArrayList不再适用于你的问题并且你需要不同的东西(LinkedList例如),那么差异就会到来。如果您将所有内容声明为List实例化,ArrayList则可以通过更改实例化来轻松切换到新实现,new ArrayList()而在其他情况下,您还必须更改所有变量声明。使用List list = new ArrayList()更多OOP样式,因为您声明您不关心列表的特定实现,并且您想要丢弃有关该类型的静态信息,因为您将依赖于此类集合提供的接口从其中抽象出来实现。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java