考虑以下情况:
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/