-
- 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,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,LogStreamLogStream,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一个对象,可以保存资源(例如文件或套接字句柄),直到它被关闭。 退出try-with-resources块时,将自动调用AutoCloseable对象的close()方法,该块已在资源规范头中声明了该对象。 这种结构可确保快速释放,避免资源耗尽异常和可能发生的错误。- API Note:
-
实现AutoCloseable实现AutoCloseable是可能的,实际上也是常见的,即使并非所有子类或实例都拥有可释放的资源。 对于必须完全通用的代码,或者当已知
AutoCloseable实例需要资源释放时,建议使用try-with-resources结构。 然而,使用设施,例如当Stream同时支持I / O基和非I / O基的形式,try使用非I / O基形式时-with资源块在一般是不必要的。 - 从以下版本开始:
- 1.7
-
-
方法详细信息
-
close
void close() throws 异常关闭此资源,放弃任何底层资源。 在try-with-resources语句管理的对象上自动调用此方法。虽然声明此接口方法抛出
异常,但强烈建议实现者声明close方法的具体实现以抛出更具体的异常,或者如果关闭操作不能失败则不抛出任何异常。关闭操作可能失败的情况需要实施者的仔细关注。 强烈建议在抛出异常之前放弃底层资源并在内部将资源标记为已关闭。
close方法不太可能被多次调用,因此这可以确保及时释放资源。 此外,它还减少了资源包装或被其他资源包装时可能出现的问题。强烈建议此接口的实现者不要使用
close方法抛出InterruptedException。 此异常与线程的中断状态交互,如果InterruptedException是suppressed,则可能发生运行时错误行为。 更一般地说,如果它会导致异常被抑制的问题,AutoCloseable.close方法不应该抛出它。请注意,与
close的方法Closeable,该close不需要方法为幂等。 换句话说,close调用此close方法可能会产生一些可见的副作用,这与Closeable.close不同,如果多次调用则不需Closeable.close。 但是,强烈建议close使用此接口的实现者使其close方法具有幂等性。- 异常
-
异常- 如果无法关闭此资源
-
-