是否有任何可能的方式关闭已创建为匿名对象的扫描程序:
new Scanner(System.in).nextLine();
Eclipse在Java 8中生成警告:
Resource leak: '<unassigned Closeable value>' is never closed
答案 0 :(得分:2)
一般情况下:您需要一个可以调用close()
的变量。将其分配给变量,调用close()
(或使用try-with-resources)。
但是在这个特定的情况下,没有资源泄漏:你没有打开System.in
(JVM在启动时做了)(*),所以你不应该关闭它,就像你关闭Scanner
包装它一样。警告是错误的。
(*)您可能已使用System.setIn
将System.in
设置为所做的打开的内容。但是,这是一种罕见且不常见的情况:您仍然应该避免关闭System.in
,并将其留给特别能够确定流可以正确关闭的代码,例如:创建InputStream
的代码,您传递给System.setIn
。