Groovy,"尝试与资源"建设的替代方案

XZe*_*Zen 56 groovy

我是Groovy的新手.我曾经在使用I/O流时在我的Java代码中使用'try-with-resources'构造.

能否请您指教,Groovy中是否有类似的这种结构?

tim*_*tes 55

Groovy 2.3也可withCloseable用于任何实现Closeable的东西

  • 如果您有AutoCloseable怎么办?运气不好? (3认同)
  • 您是否将添加一个示例说明如何将此方法与自定义Closeable对象一起使用? (2认同)
  • @ jaco0646 - 示例:`new Socket().withCloseable {socket - > ...}` (2认同)
  • 在我看来,在互联网上没有关于这个'withClosable`如何工作的例子......是否有任何文件或任何内容?最重要的是,我如何将它与`java.sql.Connection`或`java.sql.Statement`一起使用(不是我的选择 - 一个Java类将它们返回给我.) (2认同)

Gro*_*eek 31

查看文档Groovy IO和相关的javadoc.它提出的withStream,withWriter,withReader建设它们越来越具有自动closeability流的手段

  • 官方groovy文档:http://groovy-lang.org/groovy-dev-kit.html#_working_with_io (5认同)
  • 此帖子中的网址已不再可用 (3认同)

Sam*_*ske 5

以下是所有Groovy版本的最简单的try-with-resources(甚至适用于AutoCloseable接口)。其中class Thing是可关闭的类或实现AutoCloseable

new Thing().with { res ->
    try {
        // do stuff with res here
    } finally {
        res.close()
    }
}
Run Code Online (Sandbox Code Playgroud)

这在Groovy的更高版本中等效:

new Thing().withCloseable { res ->
    // do stuff with res here
}
Run Code Online (Sandbox Code Playgroud)