У меня есть класс JavaShellStream
, который расширяет интерфейсы Closeable
и Autocloseable
. Однако, когда я использую класс и не вызываю его close()
метод, предупреждение об утечке ресурсов не выдается. У меня есть еще один класс с именем JavaShell
, в котором есть метод с именем exec(String cmd)
, который возвращает объект JavaShellStream
. Когда я создаю новый объект JavaShellStream
следующим образом, предупреждение об утечке ресурсов не срабатывает:
//workingDir is a File object that sets the working directory
JavaShell js = new JavaShell(workingDir);
//execute the "ls" command and retrieve output as a JavaShellStream
JavaShellStream jss = js.exec("ls");
/*
* some code to read the text from the stream
* but DOES NOT close the stream
*/
// Note that I am NOT calling the close() method
Почему здесь не срабатывает предупреждение об утечке ресурсов, потому что JavaShellStream jss
никогда не закрывается? Ответ из здесь говорит, что все, что требуется для его запуска, это реализовать интерфейс Closeable
, но мой класс реализует как Closeable
, так и Autocloseable
, но не будет вызывать никаких предупреждений при открытии.