1

初始化 Java 集合是否有任何主要缺点,例如声明时的 ArrayList,例如:

List<String> strList = new ArrayList<String>();

主要目的是在检索元素时避免空检查的混乱。

谢谢

4

3 回答 3

3

一般来说,唯一的缺点是你可能最终会得到一大堆集合什么都不做,并且做了不必要的工作来创建集合。

我个人的偏好是始终分配一个有效的集合,除非有明确的理由避免内存和初始化开销,例如循环内和其他可能的性能考虑。如果我总是确保对象被初始化为非空值,我就不会在使用集合之前进行多余的空值检查。

我要添加的警告是确保您确实使用了您使用它的集合,并且不要在以后的代码中将其替换为全新的集合(这表明可能存在设计缺陷)。要强制执行此操作,您可以将集合声明为最终集合。

于 2013-11-12T18:51:03.253 回答
1

这取决于用例:

  • 方法体声明 - 总是好的。
  • 静态字段声明 - 应该始终没问题。
  • 字段声明。有两种流行的情况 - 当您总是需要初始化它时,或者它可能需要初始化时null。在第一种情况下,我做到了,final并且更喜欢在构造函数中进行初始化。如果可能的话null,我添加一个惰性吸气剂并使用@Nullable如下注释:
@Nullable
List<String> strList;

...

public final List getList(){
    if(strList == null){
        strList = new ArrayList();
    }
    return strList;
}

这种技术可以帮助我消除场状态的歧义。

于 2013-11-12T18:56:27.827 回答
0

您几乎应该总是立即初始化。仅仅因为它被初始化并不意味着你不应该再做空检查。创建对象和 if 检查对性能几乎没有影响。仅当您创建的列表必须从其他集合或数组中复制对象时

于 2013-11-12T18:52:29.947 回答