Ich habe eine Klasse, die AutoCloseable implementiert und mit dem neuen Try-with-resources-Konstrukt von Java 7 verwendet werden soll. Ich kann jedoch keine Möglichkeit finden, zu garantieren, dass der Benutzer meiner Klasse Try-with-Resources verwendet. Wenn dies nicht geschieht, kann meine Klasse sich nicht selbst schließen, und schlimme Dinge passieren. Gibt es einen Weg - Sprachkonstrukt oder anderes - um dies durchzusetzen? Sogar in der Lage zu erkennen, ob ich in einem try-with-resources-Block bin oder nicht, sodass ich eine Ausnahme auslösen kann, wenn das nicht der Fall ist, wäre gut (obwohl ein kompilierbares Konstrukt vorzuziehen wäre).Erzwinge try-with-resources Java 7
Danke!
Was wollte der Benutzer verwalten, um Ihre Klasse manuell zu schließen anstatt automatisch mit einem Try-with-resources? Würde das Erstellen einer "finalize" -Methode, die 'close' genannt wird, Ihr Problem beheben? – Jeffrey
Leider kann 'finalize' nicht garantiert werden. Der GC kann beschließen, ihn nicht anzurufen. – joshlf
In der Tat, ich stelle mir vor, dass die Unzuverlässigkeit von "finalisieren" ist wahrscheinlich der Grund, dass Try-mit-Ressourcen eingeführt wurde. – joshlf