Интерфейс AutoCloseable

Все известные подинтерфейсы:
AsynchronousByteChannel, AsynchronousChannel, BaseStream<T,​S>, ByteChannel, CachedRowSet, CallableStatement, Channel, Clip, Closeable, Connection, DataLine, DirectoryStream<T>, DoubleStream, ExecutionControl, FilteredRowSet, GatheringByteChannel, ImageInputStream, ImageOutputStream, InterruptibleChannel, IntStream, JavaFileManager, JdbcRowSet, JMXConnector, JoinRowSet, Line, LongStream, MidiDevice, MidiDeviceReceiver, MidiDeviceTransmitter, Mixer, ModuleReader, MulticastChannel, NetworkChannel, ObjectInput, ObjectOutput, Port, PreparedStatement, ReadableByteChannel, Receiver, ResultSet, RMIConnection, RowSet, ScatteringByteChannel, SecureDirectoryStream<T>, SeekableByteChannel, Sequencer, SourceDataLine, StandardJavaFileManager, Statement, Stream<T>, SyncResolver, Synthesizer, TargetDataLine, Transmitter, WatchService, WebRowSet, WritableByteChannel
Все известные реализующие классы:
AbstractInterruptibleChannel, AbstractSelectableChannel, AbstractSelector, AsynchronousFileChannel, AsynchronousServerSocketChannel, AsynchronousSocketChannel, AudioInputStream, BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter, ByteArrayInputStream, ByteArrayOutputStream, CharArrayReader, CharArrayWriter, CheckedInputStream, CheckedOutputStream, CipherInputStream, CipherOutputStream, DatagramChannel, DatagramSocket, DataInputStream, DataOutputStream, DeflaterInputStream, DeflaterOutputStream, DigestInputStream, DigestOutputStream, DirectExecutionControl, FileCacheImageInputStream, FileCacheImageOutputStream, FileChannel, FileImageInputStream, FileImageOutputStream, FileInputStream, FileLock, FileOutputStream, FileReader, FileSystem, FileWriter, FilterInputStream, FilterOutputStream, FilterReader, FilterWriter, Formatter, ForwardingJavaFileManager, GZIPInputStream, GZIPOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, InflaterInputStream, InflaterOutputStream, InputStream, InputStreamReader, JarFile, JarInputStream, JarOutputStream, JdiDefaultExecutionControl, JdiExecutionControl, JShell, LineNumberInputStream, LineNumberReader, LocalExecutionControl, LogStream, MemoryCacheImageInputStream, MemoryCacheImageOutputStream, MLet, MulticastSocket, ObjectInputStream, ObjectOutputStream, OutputStream, OutputStreamWriter, Pipe.SinkChannel, Pipe.SourceChannel, PipedInputStream, PipedOutputStream, PipedReader, PipedWriter, PrintStream, PrintWriter, PrivateMLet, ProgressMonitorInputStream, PushbackInputStream, PushbackReader, RandomAccessFile, Reader, Recording, RecordingFile, RemoteExecutionControl, RMIConnectionImpl, RMIConnectionImpl_Stub, RMIConnector, RMIIIOPServerImpl, RMIJRMPServerImpl, RMIServerImpl, Scanner, SctpChannel, SctpMultiChannel, SctpServerChannel, SelectableChannel, Selector, SequenceInputStream, ServerSocket, ServerSocketChannel, Socket, SocketChannel, SSLServerSocket, SSLSocket, StreamingExecutionControl, StringBufferInputStream, StringReader, StringWriter, SubmissionPublisher, URLClassLoader, URLReader, Writer, XMLDecoder, XMLEncoder, ZipFile, ZipInputStream, ZipOutputStream
public interface AutoCloseable

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

Примечание по API:

Возможна, и на самом деле она часто используется, реализация интерфейса AutoCloseable базовым классом, даже если не все его подклассы или экземпляры будут содержать освобождаемые ресурсы. Для кода, который должен работать в полной общности, или когда известно, что экземпляру AutoCloseable требуется освобождение ресурсов, рекомендуется использовать конструкции try-with-resources. Однако при использовании таких средств, как Stream, которые поддерживают как I/O-базовые, так и не-I/O-базовые формы, блоки try-with-resources, как правило, не нужны при использовании не-I/O-базовых форм.

С момента:
1.7

Методы

Модификатор и тип Метод Описание
void close()

Закрывает этот ресурс, освобождая все основанные ресурсы.

Методы

close

void close()
    throws Exception

Закрывает этот ресурс, освобождая все основанные ресурсы. Этот метод вызывается автоматически для объектов, управляемых оператором try-with-resources.

Хотя этот метод интерфейса объявлен как бросающий Exception, реализующим классам настоятельно рекомендуется объявлять конкретные реализации метода close для бросания более конкретных исключений или для не бросания исключений вообще, если операция закрытия не может завершиться сбоем.

Случаи, когда операция закрытия может завершиться сбоем, требуют тщательного внимания со стороны реализаторов. Настоятельно рекомендуется освободить основанные ресурсы и внутренне отметить ресурс как закрытый перед броском исключения. Метод close вряд ли будет вызван более одного раза, и это гарантирует, что ресурсы будут освобождены своевременно. Кроме того, это снижает проблемы, которые могут возникнуть, когда ресурс обернут или обертывает другой ресурс.

Реализаторам этого интерфейса также настоятельно рекомендуется не заставлять метод close бросать InterruptedException. Это исключение взаимодействует со статусом прерывания потока, и, вероятно, возникнет ошибка во время выполнения, если InterruptedException подавляется. В более общем плане, если подавление исключения может вызвать проблемы, метод AutoCloseable.close не должен его бросать.

Обратите внимание, что в отличие от метода close интерфейса Closeable, этот метод close не обязан быть идемпотентным. Другими словами, вызов этого метода close более одного раза может иметь какой-либо видимый побочный эффект, в отличие от Closeable.close, который должен не иметь эффекта, если вызывается более одного раза. Однако реализаторам этого интерфейса настоятельно рекомендуется делать свои методы close идемпотентными.

Бросает:
Exception - если этот ресурс не может быть закрыт

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/AutoCloseable.html

Spec-Zone .ru
спецификации, руководства, описания, API