此问题与此问题重复,但如果可以关闭,则没有一个问题得到回答。
他们只提出了替代方案——使用try-with
或实际使用类似Scanner scanner=new Scanner(System.in)
的参考。
这让我认为无法关闭未引用的扫描仪对象,但。。。
问题:对象是否应该成为符合垃圾收集的条件,从而最终关闭
(注意:我确实意识到依赖GC不是一个好主意(
查看OpenJDK源代码,Scanner
不会覆盖finalize
方法。这意味着最终收集对象时不会执行任何特殊代码,并且需要显式关闭它。
EDIT:
这可能是故意的,因为Scanner
的一个常见用例是在System.in
上使用它,您永远不应该关闭它。