java - 匿名扫描仪关闭

标签 java java.util.scanner

是否有任何可能的方法关闭已作为匿名对象创建的扫描仪:

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.setInSystem.in 设置为您确实打开的内容。然而,这是一种罕见且不寻常的情况:您仍然应该避免关闭 System.in,并将其留给专门能够确定流可以正确关闭的代码,例如创建您传递给 System.setInInputStream 的代码。

关于java - 匿名扫描仪关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874644/

相关文章:

java - 初级Java程序

Java - 反转字符串中的单词

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 为什么我不能在使用scanner.close()后创建另一个扫描仪对象?

java - 使用扫描仪读取文件时出现问题

java - 为什么我的 Java 程序中会出现 InputMismatchException?

java - 在某一点之后从历史记录中删除多个 Activity

java - 将 java.sql.Timestamp 转换为 java.sql.Date

Java:WAITINGTimerTask完成后再继续执行

java - HSQLDB 和 log4j