首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >try-with-resources和方法链接

try-with-resources和方法链接
EN

Stack Overflow用户
提问于 2015-12-23 08:56:19
回答 2查看 214关注 0票数 2

我想通过方法链接使用try- with -resources:

代码语言:javascript
复制
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent()).useDelimiter("\\A")) {
  String page = s.next();
  return page;
}

我在new Scanner(...)上收到“资源泄漏:永远不会关闭”

我可以解决这个问题(见下文),但它看起来有点过头了。有什么建议吗?

代码语言:javascript
复制
HttpEntity entity = response.getEntity();
try (
     Scanner one = new Scanner(entity.getContent());
     Scanner s = one.useDelimiter("\\A")
    ) {
  String page = s.next();
  return page;
}
EN

回答 2

Stack Overflow用户

发布于 2015-12-23 09:09:58

这个怎么样?

代码语言:javascript
复制
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent())) {
  s.useDelimiter("\\A");
  return s.next();
}

在方法链接版本中(以及在修改后的代码中),(编辑)集成开发环境认为(/EDIT) JVM创建了两个扫描器对象。但是你可以忽略来自useDelimiter()的返回值(因为它就是同一个扫描器)。

如果你真的喜欢方法链接,你可以试试这个

代码语言:javascript
复制
HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent())) {
  return s.useDelimiter("\\A").next();
}
票数 3
EN

Stack Overflow用户

发布于 2016-06-28 20:10:05

在IntelliJ中,忽略useDelimiter()的输出没有帮助,但我看到它在Eclipse中有帮助。在IntelliJ中,您可以在设置>检查:下配置从扫描仪::使用分隔符返回的实例以忽略该实例。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34426967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档