我已经用了try-with-resources
很多次了。我File
经常用它来关闭数据库资源类型或其他东西。
现在,我正在使用 POI 处理大型 Excel 文件,我刚刚注意到我应该调用workbook.dispose()
。try-with-resources 会调用该dispose()
方法吗?我查找的所有内容仅涵盖close()
。
我不确定重复的问题是否是同一个问题。我的问题具体询问是否Dispose
由 处理try-with-resource
。其他问题均未提及Dispose
。
不,try-with-resources 仅适用于实现 的对象
java.lang.AutoCloseable
。该接口定义了一个方法:close()
。该close
方法是 try-with-resources 语法调用的唯一方法。引用try-with-resources上的教程:
任何
dispose()
方法都不会自动调用。但是,这些类/库的开发人员可能决定dispose()
在其方法实现中调用该close()
方法,反之亦然。在这种情况下,两种“清理”方法都会执行相同的操作。Try-with-resources 仅支持
AutoClosable
接口并且只会调用方法。你可以在这里close()
阅读更多内容。如果需要,您可以选择使用包装器,它将实现
AutoClosable
并调用dispose()
该close()
方法。这是一个基本示例(未经测试):我不太了解 Apache POI,但您可能想验证是否有必要同时调用 close 和 dispose。