java - 使用 "try with resources"创建没有任何引用的资源

标签 java try-with-resources autocloseable

考虑以下情况:

try (ResultSet resultSet = DriverManager.getConnection("jdbc:...", "user", "pass")
                                      .createStatement().executeQuery(sql)) {    
                    .
                    .
                    .
}
这是在try内部创建了三个资源的情况资源:Connection , Statement , 和 ResultSet .
try 块结束后这三个资源会发生什么变化?它们会全部关闭吗,即使它们没有对它们的任何引用,还是只有 resultSet被关闭?
申报是否安全AutoCloseable在尝试使用资源块时没有对它们进行任何引用的资源?

最佳答案

只有ResultSet将被关闭。如果要关闭多个资源,需要分别声明:

try (Connection conn  = DriverManager.getConnection("jdbc:...", "user", "pass");
     Statement stmt = conn.createStatement();
     ResultSet resultSet = stmt.executeQuery(sql)) {    

     // do stuff...
}

关于java - 使用 "try with resources"创建没有任何引用的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65059924/

相关文章:

java - 为什么 try-with-resources catch block 是选择性可选的?

java - 如何在 aws lambda 中关闭 aws 客户端

java - 如何在 JUnit 中的临时目录中添加文件

java - Java 中的完整日期验证

java - 在 try-with-resource 中手动关闭

java - 如果发生异常,try-with-resources 会关闭资源吗?

Java Callable Pool 线程同时完成这一切

java - Mysql 驱动程序错误(泽西 Tomcat)

java - Closeable 和 AutoCloseable close() 方法的执行顺序

java - 何时使用 JDO DataNucleus Query.close()