Сонар жалуется, что сканер всегда должен быть закрыт, верно?
Scanner scanner = new Scanner("simple string")
Этот сканер не сканирует из файла и т. Д. Почему он должен быть закрыт?
При вызове new Scanner("string") создается StringReader, который создает поток символов.Поэтому вы должны закрыть его.
new Scanner("string")
StringReader
См. Исходный код OpenJDK
public Scanner(String source) { this(new StringReader(source), WHITESPACE_PATTERN); }
Как указано в Sonar doc,
Соединения, потоки, файлы и другие классы, которые реализуют Закрываемый интерфейс или его суперинтерфейс, AutoCloseable, должен быть закрыто после использования.
И Scanner реализует интерфейс Closeable. Следовательно это должно быть закрыто.
Scanner
Closeable
Ссылка ссылка .
Нет необходимости закрывать сканер, но лучше сделать это, чтобы высвободить ресурсы, выделенные для сканера, для оптимизации вашего кода и сделать его более быстрым и эффективным.