java - 使用 try-with-resources 时,没有引用的资源是否也会自动关闭

标签 java try-with-resources

示例:

try(ResultSet rs = DriverManager.getConnection(url, us, pw).createStatement().executeQuery(sql)) {

    //mycode
}

我没有任何对ConnectionStatement的引用,它们也会被关闭吗?如果它们执行的话,顺序是什么?

谢谢

最佳答案

根据language specification ,它只会关闭ResultSet目的。这是因为 try-with-resources 语句使用了资源规范,其中使用变量声明资源:

TryWithResourcesStatement:

try ResourceSpecification Block [Catches] [Finally]

ResourceSpecification:

( ResourceList [;] )

ResourceList:

Resource {; Resource}

<强> Resource:

{VariableModifier} UnannType VariableDeclaratorId = Expression

关于java - 使用 try-with-resources 时,没有引用的资源是否也会自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302863/

相关文章:

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

java - 无法在此实例 oneliner 上实例化和调用方法

java - 如何定义属性?

java - 如何修复按重量对包裹进行排序的循环

java - Java7之后把ResultSet放到一个嵌套的try-with-resources语句中是个好习惯吗?

java - 为什么以相反的执行顺序处理 try-with-resource 的抑制异常?

java - SpotBugs 是否报告了未在此处关闭资源的误报?

java - 用java加载最简单的静态模型格式?

java - 如何实例化 session 范围 bean 而不创建对它的引用?

java - 尝试资源和方法链