更新:正如@PaulGroke在下面指出的那样,Java 7已经发生了变化:现在有了AutoCloseable.这与新的try-with-resources构造没有关联并且受流支持.
AutoCloseable是.NET IDisposable接口的直接Java等价物.
CloseableJava 1.5中引入的接口与流紧密相关,甚至还有一个异常说明符IOException.这表明它应该仅用于流或其他IO相关活动,而不是通用清理逻辑.
当然,该close()方法的描述在流/ IO上下文之外完全没有意义:
void close() throws IOException关闭此流并释放与其关联的所有系统资源.
因此,我应该使用它上面Disposable的Dispose()方法声明我自己的接口,并将其用作.NET IDisposable接口的模拟吗?或者我应该重复使用,Closeable即使它可能不是一个完美的合适?
Pau*_*oke 40
我相信大多数人都知道这一点,但是因为这个问题仍然是搜索"IDisposable Java"(我刚才的#2结果)时的最佳结果,而且这里仍未提及......
Java 7已经发生了变化:现在有了AutoCloseable.这与新的try-with-resources构造没有关联并且受流支持.
Zar*_*nen 14
特别是假设close()抛出IOException然后你必须编写异常处理代码,我建议你编写自己的接口.然后,此接口可以抛出任何适合您要将接口用于的用途的已检查异常.
接口倾向于表示读者心中的意图,因此让类实现与IO相关的Closeable接口将使读者认为该类也是基于IO的.
显然,如果您要关闭的对象都与IO相关,则应使用Closeable.但除此之外
/** Interface for objects that require cleanup post-use. Call dispose() in finally block! */
public interface Disposable {
public void dispose();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14128 次 |
| 最近记录: |