Обновление. Как показано в @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, хотя это может быть не идеально подходит?