未引用的 Scanner 对象是否自动关闭?
Does unreferenced Scanner object close automatically?
此问题与此 question 重复,但其中 none 回答了是否可以关闭。
他们只提出了替代方案——使用 try-with
或实际上有像 Scanner scanner=new Scanner(System.in)
这样的参考。
这让我想到无法关闭未引用的 Scanner 对象,但是...
问题:对象是否应该符合垃圾收集的条件,因此最终会被关闭?
(注意:我确实意识到依赖于 GC 并不是一个好主意)
查看 the OpenJDK source,Scanner
不会覆盖 finalize
方法。这意味着最终收集对象时不会执行任何特殊代码,您需要显式关闭它。
编辑:
这可能是故意的,因为 Scanner
的一个常见用例是在 System.in
上使用它,你永远不应该关闭它。
此问题与此 question 重复,但其中 none 回答了是否可以关闭。
他们只提出了替代方案——使用 try-with
或实际上有像 Scanner scanner=new Scanner(System.in)
这样的参考。
这让我想到无法关闭未引用的 Scanner 对象,但是...
问题:对象是否应该符合垃圾收集的条件,因此最终会被关闭?
(注意:我确实意识到依赖于 GC 并不是一个好主意)
查看 the OpenJDK source,Scanner
不会覆盖 finalize
方法。这意味着最终收集对象时不会执行任何特殊代码,您需要显式关闭它。
编辑:
这可能是故意的,因为 Scanner
的一个常见用例是在 System.in
上使用它,你永远不应该关闭它。