"Resource never closed" 在方法链接时在 try-with-resources 中

"Resource never closed" in try-with-resources when method chaining

try(InputStream in = url.openStream(); Scanner scanner = new Scanner(in).useDelimiter("\A")) {

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

new Scanner(in)

给出警告:

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

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

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

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

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

尽管我猜你可能会声称无法正确解决此问题。问题是如果没有很多特殊的外壳,很难静态地证明 useDelimiter returns。

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