Java 应该关闭带有字符串输入的扫描器?

Java Scanner with string input should be closed?

Sonar 抱怨 Scanner 应该一直关闭,对吗?

Scanner scanner = new Scanner("simple string")

此扫描仪不是从文件等扫描。为什么要关闭它?

如 Sonar 文档中所述,

Connections, streams, files, and other classes that implement the Closeable interface or its super-interface, AutoCloseable, needs to be closed after use.

并且 Scanner 确实实现了 Closeable 接口。因此它应该被关闭。

参考这个link

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

See the OpenJDK source code

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

没有必要关闭Scanner,但最好关闭Scanner,以释放分配给Scanner的资源,优化您的代码,使其更快、更高效。