Ich habe eine Java-Klasse, die Ressourcen zugewiesen hat, die geschlossen werden müssen. Ich weiß nicht wirklich, wie man dies erzwingt, mein aktueller Ansatz ist die Implementierung der Schnittstelle AutoCloseable
, in der Hoffnung, dass der Anrufer close()
manchmal anruft und eine boolean
geschlossen, die zu Beginn jeder Methode überprüft wird und wenn true
, wirft die Methode IllegalStateException
.Was ist die beste Praxis zum Schließen von Ressourcen?
Beide, dass der Anrufer close()
aufrufen muss und dass ich am Anfang jeder Methode geschlossen zu prüfen, sind nicht wirklich nett, gibt es einige Best Practice, um dies zu vermeiden?
Ihre Frage ist nicht klar. Machen Sie es klar und teilen Sie das Code-Snippet. Es würde uns helfen, Ihr Problem zu verstehen –
"Hoffe das" ?? Dokumentieren Sie Ihre Klassen einfach so, dass Sie grundsätzlich sagen: "Wenn Sie diese Klasse nicht schließen(), ist das Verhalten nicht definiert. Verwenden Sie eine try-with-resources-Anweisung." Job erledigt. – fge
Die einzige Best Practice, die mir einfällt, ist "mach's gut". Wenn jemand mit Ihrem Code das nicht tut, dann ist das sein Problem. Die einzige andere Sache, die ich hinzufügen würde, ist "Schließen Sie nur eine Ressource, die Sie geöffnet haben". –