Я суммирую @ Nikolas и снова отвечу другими словами: в Java нет проблемы, но «проблема» (если вы вообще хотите это так называть) - это переменная. Если переменная объявлена для типа, который реализует AutoCloseable
(а Stream
делает), Eclipse, очевидно, сообщает здесь предупреждение о том, что она не закрывается, если она не находит вызов close()
.
Так как эта ошибка связана с Eclipse, вполне вероятно, что другие инструменты проверки не прервутся на этом и не нуждаются в «исправлении» для прохождения таких проверок.
Насколько я понимаю, это показывает основные c проблема Java, а именно в том, что он не освобождает объект от переменной, как только он больше не нужен, но в некоторой случайной точке. С ресурсами это не получается. Поэтому ресурсы должны отслеживаться разработчиком вручную, где их закрывать, и вручную закрывать. Среда выполнения Java (гипотетически) должна была бы реализовать такой подход, как std::auto_ptr
в C ++, тогда в этом не было бы необходимости, и, если была удалена последняя ссылка на ресурс, это можно было бы закрыть. Но это не то, что java "думает".