Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用资源和方法链接_Java_Try With Resources - Fatal编程技术网

Java 尝试使用资源和方法链接

Java 尝试使用资源和方法链接,java,try-with-resources,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; } 我在新扫描仪(…) 我可以解决这个问题(见下文),但这看起来有点过头了。有什么建议吗 HttpEntity entit

我想将try with resources与方法链接一起使用:

HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent()).useDelimiter("\\A")) {
  String page = s.next();
  return page;
}
我在
新扫描仪(…)

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

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认为(/EDIT)JVM创建了两个Scanner对象。但是您可以忽略useDelimiter()的返回值(因为它只是同一个扫描器)

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

HttpEntity entity = response.getEntity();
try (Scanner s = new Scanner(entity.getContent())) {
  return s.useDelimiter("\\A").next();
}

在IntelliJ中,忽略useDelimiter()的输出并没有帮助,但我发现它在Eclipse中有帮助。在IntelliJ中,您可以将从Scanner::useDelimiter返回的实例配置为在“设置”>“检查:”下被忽略。

它绝对不会创建两个扫描仪对象。您的代码没有问题。“资源泄漏”警告是IDE或分析工具中的一个缺陷。