Обновление. Как показано в @PaulGroke ниже, все изменилось с Java 7: теперь есть AutoCloseable. Который не привязан к потокам и поддерживается новой конструкцией try-with-resources.
AutoCloseable
- это прямой эквивалент Java для интерфейса .NET IDisposable
.
Интерфейс Closeable
, введенный в Java 1.5, тесно связан с потоками и даже имеет спецификатор исключения для IOException
. Это говорит о том, что его следует использовать только для потоков или других видов деятельности, связанных с ИО, а не для логики очистки общего назначения.
Конечно, описание метода close()
не имело бы никакого смысла вне контекста stream/IO:
void close() throws IOException
Закрывает этот поток и освобождает связанные с ним системные ресурсы.
Должен ли я объявить свой собственный интерфейс Disposable
с помощью метода Dispose()
на нем и использовать его как аналог интерфейса .NET IDisposable
? Или я должен повторно использовать Closeable
, хотя это может быть не идеально подходит?