Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
并根据https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
因此,
我的问题是,为什么Java专门引入了
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
AutoCloseable
在jdk1.7中引入,而Cloesable
已在jdk1.5中引入。并根据https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
因此,
Closeable
实例已经可以在try-with-resources
语句中视为资源。这是肯定的,因为Closeable
是从AutoCloseable
扩展的。我的问题是,为什么Java专门引入了
AutoCloseable
,为什么它们不只使Closet在try-with-resources
中受支持,除了try-with-resources
之外,还有其他其他方式可以使用AutoCloseable吗? 最佳答案
Closeable
被限制为抛出IOException
,这可能不适用于某些可关闭但不受IO约束的资源。
声明AutoCloseable
抛出Exception
,使其更具通用性。Closeable
的API不能更改为抛出Exception
,因为这将是一个重大更改,因此是新的 super 接口(interface)。
另外,作为documented:
因此,尽管每个Closeable
都是Autocloseable
,但事实并非如此,将try-catch-finally最终限制为Closeable
的语义将受到限制。
10-06 09:35