我想将 try-with-resources 与方法链接一起使用:
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent()).useDelimiter("\\A")) {
String page = s.next();
return page;
}
我在 new Scanner(...)
上收到“资源泄漏:从未关闭”消息
我可以解决这个问题(见下文),但它看起来有点矫枉过正。有什么建议吗?
HttpEntity entity = response.getEntity();
try (
Scanner one = new Scanner(entity.getContent());
Scanner s = one.useDelimiter("\\A")
) {
String page = s.next();
return page;
}
最佳答案
这个怎么样?
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent())) {
s.useDelimiter("\\A");
return s.next();
}
在方法链接版本中(以及在您修改后的代码中),(编辑)IDE 认为(/编辑)JVM 创建了两个 Scanner 对象。但是您可以忽略 useDelimiter() 的返回值(因为它只是同一个 Scanner)。
如果你真的热衷于方法链,你可以尝试这个
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent())) {
return s.useDelimiter("\\A").next();
}
关于java - 尝试资源和方法链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426967/