从AutoCloseable的注释可知它的出现是为了更好的管理资源,准确说是资源的释放,当一个资源类实现了该接口close方法,在使用try-catch-resources语法创建的资源抛出异常后,JVM会自动调用close 方法进行资源释放,当没有抛出异常正常退出try-block时候也会调用close方法。像数据库链接类Connection,io类InputStream或OutputStream都直接或者间接实现了该接口。
一个可能持有资源(如文件或套接字句柄)的对象直到它关闭。{@code AutoCloseable} t对象的{@link #close()}方法在退出{code时被自动调用在Try}-with-resources块中声明了对象*资源规范头。这种构造确保了提示释放,避免了资源耗尽的异常和错误*可能发生其他情况@apiNote这是可能的,实际上是常见的,为一个基类实现AutoCLoseable,即使不是所有的子类或*实例将保存可释放的资源。用于必须运行的代码在完全通用的情况下,或者当知道facode Autocloseable}实例需要释放资源时,建议使用{@code*尝试}与资源建设。
基类有可能,实际上也是常见的*实现自动关闭,即使不是所有的子类或*实例将保存可释放的资源。用于必须运行的代码或者当已知{@code Autocloseable} *实例需要释放资源时,建议使用{code . **尝试}与资源建设。但是,当使用诸如t {@link java.util.stream。Stream}支持基于I/0和*非基于1/0的形式,{@code try}-with-resources块*使用非i /0形式时一般不必要