Шаг 88.
Язык программирования Java.
Интерфейсы AutoCloseable, Closeable и Flushable

На этом шаге мы рассмотрим интерфейсы AutoCloseable, Closeable и Flushable

Данные интерфейсы имеют большое значение для классов потоков ввода-вывода. Два из них, интерфейсы Closeable и Flushable, были определены в пакете java.io и внедрены в версии JDK 5. Третий, интерфейс AutoCloseable, был внедрен в версии JDK 7 и входит в состав пакета java.lang.

В версии JDK 7 интерфейс AutoCloseable обеспечивает поддержку нового оператора try с ресурсами, который автоматизирует процесс закрытия ресурса. Только объекты классов, реализующих интерфейс AutoCloseable, могут управляться оператором try с ресурсами. В интерфейсе AutoCloseable определяется единственный метод close():

void close() throws Exception;

Этот метод закрывает вызывающий объект, высвобождая любые ресурсы, которыми он может пользоваться. Метод close() вызывается автоматически по завершении оператора try с ресурсами, избавляя от необходимости вызывать его явным образом. Автоматическое закрытие потоков ввода-вывода гарантирует правильность их освобождения, когда они больше не нужны, предотвращая тем самым утечку памяти и другие осложнения.

В интерфейсе Closeable также определяется метод close(). Начиная с версии JDK 7 интерфейс Closeable расширяет интерфейс AutoCloseable. Поэтому в версии JDK 7 любой класс, реализующий интерфейс Closeable, реализует также интерфейс AutoCloseable.

Объекты класса, реализующего интерфейс Flushable, могут принудительно направить буферизованные данные в тот поток вывода, к которому присоединен данный объект. В этом интерфейсе определяется единственный метод flush(), как показано ниже:

void flush() throws IOException;

Очистка потока вывода обычно приводит к тому, что буферизованные данные физически выводятся на базовое устройство. Этот интерфейс реализуется всеми классами, способными направлять данные в поток вывода.

На следующем шаге мы начнем знакомиться с потоками ввода-вывода байтов

Предыдущий шаг Содержание Следующий шаг