匿名扫描仪关闭

时间:2017-07-02 19:50:49

标签: java java.util.scanner

是否有任何可能的方式关闭已创建为匿名对象的扫描程序:

new Scanner(System.in).nextLine();

Eclipse在Java 8中生成警告:

Resource leak: '<unassigned Closeable value>' is never closed

1 个答案:

答案 0 :(得分:2)

一般情况下:您需要一个可以调用close()的变量。将其分配给变量,调用close()(或使用try-with-resources)。

但是在这个特定的情况下,没有资源泄漏:你没有打开System.in(JVM在启动时做了)(*),所以你不应该关闭它,就像你关闭Scanner包装它一样。警告是错误的。

(*)您可能已使用System.setInSystem.in设置为所做的打开的内容。但是,这是一种罕见且不常见的情况:您仍然应该避免关闭System.in,并将其留给特别能够确定流可以正确关闭的代码,例如:创建InputStream的代码,您传递给System.setIn