java – 声明ArrayList或集合实现类的最佳实践

任何人都可以解释以下ArrayList的声明与存储String的区别.

List type1 = new ArrayList();
List type2 = new ArrayList<String>();
List<String> type3 = new ArrayList<String>();
ArrayList<String> type4 = new ArrayList<String>();
List<String> type5 = null;
ArrayList<String> type6 = null;

那么上面哪个声明是声明String的ArrayList的最佳做法,为什么?

前两个使用原始类型.这样做意味着您的列表根本不是类型安全的.编译器将允许您将Integers存储在内部,即使您的目的是要有一个字符串列表.编译器将发出警告,您不应忽略.

第三个是对的.它告诉编译器您的意图是使用字符串List,并且您选择的特定实现是ArrayList.如果您稍后改变主意并希望使用LinkedList,则此行代码是您需要更改的唯一代码.

第四个告诉编译器你的程序不需要一个List.它需要此List为ArrayList.如果您的代码确实需要调用特定于ArrayList的方法,并且在List接口中不存在,那么这是可以的.但在99.9%的情况下,情况并非如此,你应该更喜欢第三种情况.

最后两个声明一个变量并将其初始化为null而不是创建一个列表.这是一种设计气味.在使用列表之前,您必须确保无处不在.使用有效列表立即初始化它会更安全.

翻译自:https://stackoverflow.com/questions/29726891/best-practice-to-declare-arraylist-or-collection-implementation-classes

原文 

https://codeday.me/bug/20190112/523213.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java – 声明ArrayList或集合实现类的最佳实践

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址