是否有任何可能的方法关闭已作为匿名对象创建的扫描仪:
new Scanner(System.in).nextLine();
Eclipse 在 Java 8 中生成警告:
Resource leak: '<unassigned Closeable value>' is never closed
最佳答案
一般来说:您需要一个可以调用 close()
的变量。将其分配给变量,调用 close()
(或使用 try-with-resources)。
但在这种特定情况下,不存在资源泄漏:您没有打开 System.in
(JVM 在启动时打开了)(*),因此您不应该关闭它,就像您关闭包裹它的 Scanner
一样。该警告是错误的。
(*) 您可能已使用 System.setIn
将 System.in
设置为您确实打开的内容。然而,这是一种罕见且不寻常的情况:您仍然应该避免关闭 System.in,并将其留给专门能够确定流可以正确关闭的代码,例如创建您传递给 System.setIn
的 InputStream
的代码。
关于java - 匿名扫描仪关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874644/