Сонар жалуется, что Сканер всегда должен быть закрыт, это правильно?
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 интерфейс. Следовательно, он должен быть закрыт.
Обратитесь к этому связь.
Вызывая new Scanner("string"), он создает StringReader, который создает поток символов. Поэтому вы должны закрыть его.
public Scanner(String source) {
this(new StringReader(source), WHITESPACE_PATTERN);
}
@Slaw Вероятно, нет, но именно поэтому Sonar жалуется, поскольку он реализует интерфейсы Closeable.
извините, но я действительно запутался, нужно ли закрывать или я отмечу это как ложное срабатывание и не закрою?
@user9449907 user9449907 Закройте его, чтобы оставаться последовательным.
Нет необходимости закрывать Сканер, но лучше это сделать, чтобы высвободить ресурсы, выделенные Сканеру для оптимизации вашего кода и сделать его более быстрым и эффективным.
Но разве нужно закрывается? Похоже, что
StringReaderне содержит никаких ресурсов, которые необходимо высвободить. Глядя на исходный код, методclose()просто устанавливает ссылку, которую он имеет, наStringнаnull.