java - 尝试资源和方法链

标签 java try-with-resources

我想将 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/

相关文章:

java - 绘制圆金字塔的公式

java - Android 尝试使用资源未找到方法 close()

java - 如何使用 intellij 将字段重构为 try-with-resources

java - 语句上的 try-with-resources 是否会关闭连接?

java - 如何比较 ArrayList 中的 ArrayList 之间的 Int? (java)

java - 在Java中按大小组织一组集合

java - 如何在 Java 中对接口(interface)对象使用 try-with-resources 语句

stream - 关闭流链和尝试资源

java - 亚行没有响应 - Android Studio

java - Log42 异步记录器在应用程序突然关闭时如何表现?