Spec-Zone.ru › OpenJDK 8

Интерфейс AutoCloseable

Все известные подинтерфейсы:
AsynchronousByteChannel, AsynchronousChannel, BaseStream<T,S>, ByteChannel, CachedRowSet, CallableStatement, Channel, Clip, Closeable, Connection, DataLine, DirectoryStream<T>, DoubleStream, FilteredRowSet, GatheringByteChannel, ImageInputStream, ImageOutputStream, InterruptibleChannel, IntStream, JavaFileManager, JdbcRowSet, JMXConnector, JoinRowSet, Line, LongStream, MidiDevice, MidiDeviceReceiver, MidiDeviceTransmitter, Mixer, 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, FileCacheImageInputStream, FileCacheImageOutputStream, FileChannel, FileImageInputStream, FileImageOutputStream, FileInputStream, FileLock, FileOutputStream, FileReader, FileSystem, FileWriter, FilterInputStream, FilterOutputStream, FilterReader, FilterWriter, Formatter, ForwardingJavaFileManager, GZIPInputStream, GZIPOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, InflaterInputStream, InflaterOutputStream, InputStream, InputStream, InputStream, InputStreamReader, JarFile, JarInputStream, JarOutputStream, LineNumberInputStream, LineNumberReader, LogStream, MemoryCacheImageInputStream, MemoryCacheImageOutputStream, MLet, MulticastSocket, ObjectInputStream, ObjectOutputStream, OutputStream, OutputStream, OutputStream, OutputStreamWriter, Pipe.SinkChannel, Pipe.SourceChannel, PipedInputStream, PipedOutputStream, PipedReader, PipedWriter, PrintStream, PrintWriter, PrivateMLet, ProgressMonitorInputStream, PushbackInputStream, PushbackReader, RandomAccessFile, Reader, RMIConnectionImpl, RMIConnectionImpl_Stub, RMIConnector, RMIIIOPServerImpl, RMIJRMPServerImpl, RMIServerImpl, Scanner, SelectableChannel, Selector, SequenceInputStream, ServerSocket, ServerSocketChannel, Socket, SocketChannel, SSLServerSocket, SSLSocket, StringBufferInputStream, StringReader, StringWriter, URLClassLoader, Writer, XMLDecoder, XMLEncoder, ZipFile, ZipInputStream, ZipOutputStream

public interface AutoCloseable

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

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

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

С момента:
1.7

Методы

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

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

Методы

close

void close()
    throws Exception

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

Хотя этот метод интерфейса объявлен как бросающий 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API