使用数组初始化为null的目的是什么?

时间:2017-05-18 12:09:46

标签: java arrays

我想知道使用初始化为null的数组的目的是什么 并且数组不可变一旦初始化就无法更改? 这是一个例子

SomeClass[] b = null;
try {
  ObjectInputStream inputStream =
       new ObjectInputStream(new FileInputStream("arrayfile"));
  b = (SomeClass [])inputStream.readObject();
  inputStream.close();
}

1 个答案:

答案 0 :(得分:1)

这有两个答案:

  • 执行此操作的合理原因是确保b 已明确初始化,或者catch阻止该try,或try / catch之后。 (如果您不这样做,并且在其中一个地方使用 b,则会出现编译错误。)

  • 实际的原因只能通过询问代码的作者来确定。 (可能是作者正在关注一些所谓的"最佳实践" ......那不是。)

我还应该指出,您的示例代码可能会泄漏文件描述符。写它不泄漏fds的现代方法是:

SomeClass[] b = null;
try (
    ObjectInputStream inputStream =
        new ObjectInputStream(new FileInputStream("arrayfile"))) 
{
    b = (SomeClass []) inputStream.readObject();
}

旧的(Java 7之前版本)方法是使用finally块来关闭流。