【问题标题】:"Resource never closed" in try-with-resources when method chaining方法链接时尝试资源中的“资源从不关闭”
【发布时间】:2015-12-04 05:40:04
【问题描述】:
try(InputStream in = url.openStream(); Scanner scanner = new Scanner(in).useDelimiter("\\A")) {

} catch(IOException e) {
    e.printStackTrace();
}

线

新扫描仪(输入)

给出警告:

Resource leak: <unassigned Closeable> value' is never closed

如果我删除useDelimiter(String),它就会消失。

useDelimiter(String) 不返回新实例(它返回this),那么为什么我会收到此警告?它是一个错误吗?

我正在使用 Eclipse 4.4。我的问题与this 无关,因为不同的情况会出现警告

【问题讨论】:

标签: java java.util.scanner compiler-warnings try-with-resources


【解决方案1】:

是的,这看起来像是泄漏检查器中的一个错误。我建议提交错误报告。最初的谷歌搜索似乎表明一个尚不存在。

虽然我猜您可能会声称无法正确解决此问题。问题是很难静态证明 useDelimiter 在没有大量特殊大小写的情况下返回 this。

【讨论】:

    【解决方案2】:

    IntelliJ 也有这个缺陷。对我来说,资源检查器似乎一点也不难找出 useDelimiter() 返回 this。所以我认为如果在 IntelliJ 和/或 Eclipse 中修复,这可能是一个快速的胜利:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2012-10-09
      • 2017-01-03
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多