带字符串输入的Java Scanner应该关闭吗?

时间:2019-04-04 10:07:16

标签: java java.util.scanner sonar-runner

Sonar抱怨扫描仪应始终关闭,对吗?

Scanner scanner = new Scanner("simple string")

此扫描仪未从文件等进行扫描。为什么应将其关闭?

3 个答案:

答案 0 :(得分:1)

在Sonar文档中指定,

  

连接,流,文件和其他实现   Closeable接口或其超级接口AutoCloseable必须是   使用后关闭。

Scanner确实实现了Closeable接口。因此,应将其关闭。

请参阅此link

答案 1 :(得分:1)

通过调用new Scanner("string")会创建一个StringReader来创建字符流。所以您必须关闭它。

See the OpenJDK source code

public Scanner(String source) {
    this(new StringReader(source), WHITESPACE_PATTERN);
}

答案 2 :(得分:0)

不需要关闭扫描仪,但最好这样做,以释放分配给扫描仪的资源,以优化代码并使其更快,更高效。