初始化Java集合是否有任何主要缺点,例如声明时的ArrayList如:
List<String> strList = new ArrayList<String>();
主要目的是避免在检索元素时出现空值检查的混乱。
由于
答案 0 :(得分:3)
一般来说,唯一的缺点是你最终可能会收集大量的集合,并且不必要地完成创建集合的工作。
我个人的偏好是始终分配有效的集合,除非有明确的理由避免内存和初始化开销,例如在循环内和其他可能的性能考虑因素。如果我总是确保将对象初始化为非null,那么 不会 ,然后在使用集合之前进行冗余的空检查。
我要添加的注意事项是确保您是否使用了使用它的集合,而不是在以后的代码中将其替换为全新的集合(这表示可能的设计缺陷)。要强制执行此操作,您可以将集合声明为final。
答案 1 :(得分:1)
这取决于用例:
null
时。在第一种情况下,我使它final
并且更喜欢在构造函数中初始化。如果它可能是null
,我会添加一个懒惰的getter并使用@Nullable
注释它,如下所示:@Nullable
List<String> strList;
...
public final List getList(){
if(strList == null){
strList = new ArrayList();
}
return strList;
}
这种技术可以帮助我消除场状态的模糊性。
答案 2 :(得分:0)
您几乎应该立即初始化。仅仅因为它的初始化并不意味着你不应该再进行空检查。创建对象和if检查对性能几乎没有影响。仅当您创建必须从其他集合或数组复制对象的列表时