JDK或公共库中是否有执行此操作的帮助器方法:
if (resource instanceof AutoCloseable) {
((AutoCloseable) resource).close();
}如果适用,只使用一行代码来调用对象的close()。
我知道用资源试一试,这不适用于这种情况。我知道并不是所有具有close()方法的类都实现了AutoCloseable。但是,我似乎一遍又一遍地写着上面的内容。
发布于 2014-03-24 04:06:15
Apache Commons提供了一些功能:
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.Closeable)
发布于 2017-11-21 03:35:37
以下是适用于AutoCloseable的apache commons closeQuietly:
static void closeQuietly(AutoCloseable closeable) {
try {
if (closeable != null) {
closeable.close();
}
}
catch (Exception swallowed) {
}
}既然google把我派到这里来解决这个问题:)
发布于 2014-03-24 04:04:32
编辑
请检查以下内容:
class CloserHelper
{
public static void close(Object object)
{
if (object instanceof AutoCloseable)
{
try
{
((AutoCloseable) object).close();
}
catch (Exception ignored) { }
}
}
}我可以想出这样的事情
class CloserHelper
{
public static void close(AutoCloseable obj) throws Exception
{
obj.close();
}
}然后
CloserHelper.close(resource);如果对象不是AutoCloseable,则不能直接调用它
如果您想要忽略异常
class CloserHelper
{
public static void close(AutoCloseable obj)
{
try
{
obj.close();
}
catch (Exception e) { }
}
}https://stackoverflow.com/questions/22596330
复制相似问题