Java 未引用的扫描仪对象是否自动关闭?

Java 未引用的扫描仪对象是否自动关闭?,java,garbage-collection,java.util.scanner,Java,Garbage Collection,Java.util.scanner,这个问题是这个问题的重复,但如果可以关闭,则没有人回答 他们只建议了一些替代方案——使用try with或实际使用Scanner Scanner=new ScannerSystem.in之类的参考 这导致我认为未引用的扫描仪对象不能关闭,但 问题:对象是否应该成为垃圾收集的对象,并因此最终被关闭? 注意:我确实意识到依赖GC不是一个好主意,扫描器不会覆盖finalize方法。这意味着最终收集对象时不会执行任何特殊代码,您需要显式关闭它 编辑: 这可能是有意的,因为扫描器的一个常见用例是在Syst

这个问题是这个问题的重复,但如果可以关闭,则没有人回答

他们只建议了一些替代方案——使用try with或实际使用Scanner Scanner=new ScannerSystem.in之类的参考

这导致我认为未引用的扫描仪对象不能关闭,但

问题:对象是否应该成为垃圾收集的对象,并因此最终被关闭? 注意:我确实意识到依赖GC不是一个好主意,扫描器不会覆盖finalize方法。这意味着最终收集对象时不会执行任何特殊代码,您需要显式关闭它

编辑: 这可能是有意的,因为扫描器的一个常见用例是在System.in上使用它,您永远不应该关闭它。

查看,扫描器不会覆盖finalize方法。这意味着最终收集对象时不会执行任何特殊代码,您需要显式关闭它

编辑:
这可能是有意的,因为扫描仪的一个常见用例是在System.in上使用它,您永远不应该关闭它。

扫描仪不会自动关闭。注意,在此处关闭扫描仪也会关闭System.in,其中是全局。扫描仪不会自动关闭。注意,在这里关闭扫描程序也会关闭System.in,其中是一个全局对象。简而言之,该对象已被垃圾收集,但底层流仍处于打开状态?@HelloWorld是的,确切地说,一般来说,包装另一个资源对象的对象将永远不会有终结器关闭它们,因为在底层资源仍在使用时,包装器总是可能被垃圾收集,如中所示。因此,扫描仪没有终结器或清理器,但底层资源(例如,在包装FileInputStream时)可能有终结器或清理器。尽管如此,这并不是对依赖垃圾收集资源的邀请。简而言之,System.in的情况是,对象已被垃圾收集,但底层流仍处于打开状态?@HelloWorld是的,确切地说,一般来说,包装另一个资源对象的对象永远不会有终结器关闭它们,因为包装器总是可能在底层资源仍在使用时被垃圾收集,如中。因此,扫描仪没有终结器或清理器,但底层资源(例如,在包装FileInputStream时)可能有终结器或清理器。尽管如此,这并不是对依赖垃圾收集资源的邀请。系统的例子…