public interface AutoCloseable
AutoCloseable对象的close()方法在退出已在资源规范头中声明对象的try -with-resources块时自动调用。
这种结构确保迅速释放,避免资源耗尽异常和可能发生的错误。
实际上,基类实现自动关闭是可能的,实际上是可行的,尽管不是所有的子类或实例都将保存可释放的资源。 对于必须以完全一般性操作的代码,或者当知道AutoCloseable实例需要资源释放时,建议使用try资源结构。 然而,使用设施,例如当Stream同时支持I / O基和非I / O基的形式, try -with资源块是一般不必要使用非I / O基形式时。
void close()
throws 异常
try -with-resources语句管理的对象上自动调用此方法。
虽然这个接口方法被声明为抛出异常 , 强烈建议实施者声明close方法的具体实现来抛出更多特定的异常,或者如果关闭操作不能失败,则完全不会抛出任何异常。
关闭操作可能失败的情况需要执行人员的注意。 强烈建议放弃基础资源,并将资源内部标记为封闭资源,然后再投出异常。 close方法不太可能被多次调用,因此可以确保资源及时释放。 此外,它减少了当资源包裹或被另一资源包装时可能出现的问题。
强烈建议这个接口的实现者不要使用close方法抛出InterruptedException 。 此异常与线程的中断状态相互作用,如果InterruptedException为suppressed,则可能会发生运行时行为不当 。 更一般来说,如果这将导致异常被抑制的问题, AutoCloseable.close方法不应该抛出异常。
请注意,与close的方法Closeable ,这close 不需要方法为幂等。 换句话说, close调用这个close方法可能会有一些可见的副作用,不像Closeable.close ,如果调用Closeable.close ,则不需要任何效果。 但是,强烈建议这个界面的实现者使他们的close方法是幂等的。
异常 - 如果此资源无法关闭
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.