Java 尝试使用资源和方法链接
我想将try with resources与方法链接一起使用: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
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或分析工具中的一个缺陷。