"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 中修复这可能是一个快速的胜利 :)
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 中修复这可能是一个快速的胜利 :)