-
- All Known Subinterfaces:
-
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,WebRowSetWebRowSet,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,InputStream,InputStream,InputStreamReader,JarFileJarFile,JarInputStream,JarOutputStream,JdiDefaultExecutionControl,JdiExecutionControl,JShell,LineNumberInputStream,LineNumberReader,LocalExecutionControl,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,RemoteExecutionControl,RMIConnectionImpl,RMIConnectionImpl_Stub,RMIConnector,RMIIIOPServerImpl,RMIJRMPServerImpl,RMIServerImpl,Scanner,SctpChannel,SctpMultiChannel,SctpServerChannel,SelectableChannel,Selector,SequenceInputStream,ServerSocket,ServerSocketChannel,Socket,SocketChannel,SSLServerSocket,SSLSocket,StreamingExecutionControl,StringBufferInputStream,StringReaderStringReader,StringWriter,SubmissionPublisher,URLClassLoader,URLReader,Writer,XMLDecoder,XMLEncoder,ZipFile,ZipInputStream,ZipOutputStream
public interface AutoCloseable可以保存资源的对象(如文件或套接字句柄),直到它关闭。AutoCloseable对象的close()方法在退出已在资源规范头中声明对象的try资源块时自动调用。 这种结构确保迅速释放,避免资源耗尽异常和可能发生的错误。- API Note:
-
实际上,基类实现自动关闭是可能的,实际上是可行的,尽管不是所有的子类或实例都将保存可释放的资源。 对于必须以完全一般性运行的代码,或者当知道
AutoCloseable实例需要资源释放时,建议使用try-with-resources构造。 然而,使用设施,例如当Stream同时支持I / O基和非I / O基的形式,try-with资源块是一般不必要使用非I / O基形式时。 - 从以下版本开始:
- 1.7
-
-
方法详细信息
-
close
void close() throws 异常关闭此资源,放弃任何基础资源。 这个方法是在由try-with-resources语句管理的对象上自动调用的。虽然这个接口方法被声明为抛出
异常, 强烈建议实现者声明close方法的具体实现来抛出更多的特定异常,或者如果关闭操作不能失败,则完全不抛出任何异常。关闭操作可能失败的情况需要执行人员的注意。 强烈建议放弃基础资源,并将资源内部标记为封闭资源,然后再投出异常。
close方法不太可能被多次调用,因此可以确保资源及时释放。 此外,它减少了当资源包裹或被另一资源包装时可能出现的问题。此接口的实施者也强烈建议没有
close方法抛出InterruptedException。 此异常与线程的中断状态相互作用,如果InterruptedException为suppressed,则可能会发生运行时行为不当。 更一般来说,如果这将导致异常被抑制的问题,那么AutoCloseable.close方法不应该抛出异常。请注意,与
close的方法Closeable,这close不需要方法为幂等。 换句话说,close调用这个close方法可能会有一些可见的副作用,不像Closeable.close,如果多次调用,则不需要任何效果。 然而,强烈建议这个接口的实现者使他们的close方法是幂等的。- 异常
-
异常- 如果此资源无法关闭
-
-