在为开放资源调用null
之前,网上有一些示例检查close()
。
final InputStream in = ...; // may throw IOException
try {
// do something.
} finally {
if (in != null) { // this is really required?
in.close();
}
}
我总是在没有null-checking-if
的情况下完成。
final InputStream in = ...; // may throw IOException
try { // when it reached to this line 'in' is never null, could it be?
// do something.
} finally {
in.close(); // no null check required, am i wrong?
}
答案 0 :(得分:2)
如果资源在任何代码执行路径中都不可能成为null
,则无需进行空检查。
你做对了。
答案 1 :(得分:1)
final InputStream in = ...;
...
可能会返回null
,这就是检查的原因。
答案 2 :(得分:1)
InputStream实现AutoClosable,因此您可以使用try-with-resources语句。然后你不必处理null,因为Java会为你做这件事。
try (InputStream in = ...) {
[some code]
}