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而不是创建一个列表.这是一种设计气味.在使用列表之前,您必须确保无处不在.使用有效列表立即初始化它会更安全.

转载注明原文:java – 声明ArrayList或集合实现类的最佳实践 - 代码日志