gpt4 book ai didi

java - 当 AutoCloseable 为空时尝试使用资源

转载 作者:IT老高 更新时间:2023-10-28 20:48:11 25 4
gpt4 key购买 nike

try-with 功能如何对声明为 nullAutoCloseable 变量起作用?

我认为当它尝试在变量上调用 close 时这会导致空指针异常,但它运行没有问题:

try (BufferedReader br = null){
System.out.println("Test");
}
catch (IOException e){
e.printStackTrace();
}

最佳答案

Java 语言规范在 14.20.3. try-with-resources 部分中指定它仅在非空时关闭。 :

A resource is closed only if it initialized to a non-null value.

这实际上很有用,当一种资源有时会出现,而另一些则不存在时。

例如,假设您可能有也可能没有某个远程日志记录系统的可关闭代理。

try ( IRemoteLogger remoteLogger = getRemoteLoggerMaybe() ) {
if ( null != remoteLogger ) {
...
}
}

如果引用不为空,则远程记录器代理将关闭,如我们所料。但是,如果引用为 null,则不会尝试对其调用 close(),不会抛出 NullPointerException,并且代码仍然有效。

关于java - 当 AutoCloseable 为空时尝试使用资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com