モジュール java.base
パッケージ java.lang

インタフェース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
閉じられるまで、リソース(ファイルやソケット・ハンドルなど)を保持できるオブジェクト。 AutoCloseableオブジェクトのclose()メソッドは、リソース指定ヘッダーでそのオブジェクトが宣言されている try-with-resourcesブロックの終了時に自動的に呼び出されます。 この構築によって即時解放が確保され、それ以外の場合に発生する可能性のあるリソース不足例外およびエラーを回避できます。
APIの注:

AutoCloseableのすべてのサブクラスまたはインスタンスが解放可能なリソースを保持するとは限りませんが、基底クラスがAutoCloseableを実装する可能性があり、実際にそれが一般的です。 完全な普遍性で動作する必要があるコードの場合、またはAutoCloseableインスタンスがリソースの解放を必要としていることがわかっている場合は、 try-with-resources構築を使用することをお薦めします。 ただし、入出力ベースと非入出力ベースの両方の形式をサポートしている機能(Streamなど)を使用している場合、非入出力ベース形式の使用時は通常 try-with-resourcesブロックは必要ありません。

導入されたバージョン:
1.7
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void close()
    このリソースを閉じ、ベースとなるリソースをすべて解放します。
  • メソッドの詳細

    • close

      void close() throws Exception
      このリソースを閉じ、ベースとなるリソースをすべて解放します。 このメソッドは、try-with-resources文で管理されているオブジェクトで自動的に呼び出されます。

      このインタフェース・メソッドは Exceptionをスローするように宣言されていますが、実装者には、closeメソッドの具象実装を宣言する際に、より具体的な例外をスローするか、またはクローズ処理で失敗できない場合は例外を一切スローしないことを強くお薦めします。

      クローズ操作が失敗する可能のあるケースでは、実装者は細心の注意を払う必要があります。 例外をスローする前に、ベースとなるリソースを解放し、リソースをクローズ済みとして内部的にマークすることを強くお薦めします。 closeメソッドが複数回呼び出される可能性は低いため、これによってリソースはタイムリに解放されるようになります。 さらに、リソースが別のリソースをラップするか、別のリソースによってラップされるときに発生する可能性のある問題も減少します。

      このインタフェースの実装者には、closeメソッドからInterruptedExceptionがスローされないようにすることも強くお薦めします。 この例外はスレッドの割込みステータスと相互に作用するので、 InterruptedException抑制されるとおそらく実行時の誤動作が発生します。 より一般的には、ある例外を抑制すると問題が発生する場合、AutoCloseable.closeメソッドはその例外をスローすべきではありません。

      Closeablecloseメソッドと異なり、このcloseメソッドはべき等である必要はありません つまり、このcloseメソッドを複数回呼び出すと何らかの副作用が発生する可能性がありますが、これは、複数回呼び出されても副作用がないことが要求されるCloseable.closeと異なります。 ただし、このインタフェースの実装者には、自身のcloseメソッドをべき等にすることを強くお薦めします。

      例外:
      Exception - このリソースを閉じることができない場合