Java是否会自动关闭在Try Block主体中声明的自动固有S?
我有以下代码,
try (Scanner scanner = new Scanner(new File(path))){
while(scanner.hasNextLine()){
Scanner delimit = new Scanner(scanner.nextLine()).useDelimiter("-");
...
}
}
...
我了解括号中的扫描仪将自动关闭,但是我从未明确关闭delimit
,并且对资源泄漏没有任何警告。那么,Java是否会自动关闭任何自动固有
-s在Try Block主体中声明的声明,还是这是一个错误,我应该收到资源泄漏警告?
I have the following code
try (Scanner scanner = new Scanner(new File(path))){
while(scanner.hasNextLine()){
Scanner delimit = new Scanner(scanner.nextLine()).useDelimiter("-");
...
}
}
...
I understand that the scanner in parentheses will be closed automatically, however I never explicitly close delimit
and I get no warning about a resource leak. So does Java automatically close any AutoClosable
-s declared in try block body or is this a bug and I should be getting a resource leak warning?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,Java不会关闭体内声明的每个资源。 Java会自动关闭“尝试声明的资源”,以便您可以将代码更改为如下,然后Java将自动关闭它 -
}
No, java wont close every resource declared in body. Java automatically will close the resources declared with try so you can change your code to like below, then java will close it automatically -
}