我想知道使用初始化为null的数组的目的是什么 并且数组不可变一旦初始化就无法更改? 这是一个例子
SomeClass[] b = null;
try {
ObjectInputStream inputStream =
new ObjectInputStream(new FileInputStream("arrayfile"));
b = (SomeClass [])inputStream.readObject();
inputStream.close();
}
答案 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
块来关闭流。