首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果实现了AutoCloseable,调用close()的帮助器?

如果实现了AutoCloseable,调用close()的帮助器?
EN

Stack Overflow用户
提问于 2014-03-24 04:00:22
回答 3查看 1.5K关注 0票数 4

JDK或公共库中是否有执行此操作的帮助器方法:

代码语言:javascript
复制
if (resource instanceof AutoCloseable) {
    ((AutoCloseable) resource).close();
}

如果适用,只使用一行代码来调用对象的close()

我知道用资源试一试,这不适用于这种情况。我知道并不是所有具有close()方法的类都实现了AutoCloseable。但是,我似乎一遍又一遍地写着上面的内容。

EN

回答 3

Stack Overflow用户

发布于 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)

票数 0
EN

Stack Overflow用户

发布于 2017-11-21 03:35:37

以下是适用于AutoCloseable的apache commons closeQuietly

代码语言:javascript
复制
  static void closeQuietly(AutoCloseable closeable) {
    try {
      if (closeable != null) {
        closeable.close();
      }
    }
    catch (Exception swallowed) {
    }
  }

既然google把我派到这里来解决这个问题:)

票数 0
EN

Stack Overflow用户

发布于 2014-03-24 04:04:32

编辑

请检查以下内容:

代码语言:javascript
复制
class CloserHelper
{
    public static void close(Object object)
    {
        if (object instanceof AutoCloseable)
        {
            try
            {
                ((AutoCloseable) object).close();
            }
            catch (Exception ignored) { }
        }
    }
}

我可以想出这样的事情

代码语言:javascript
复制
class CloserHelper
{
    public static void close(AutoCloseable obj) throws Exception
    {
        obj.close();
    }
}

然后

代码语言:javascript
复制
CloserHelper.close(resource);

如果对象不是AutoCloseable,则不能直接调用它

如果您想要忽略异常

代码语言:javascript
复制
class CloserHelper
{
    public static void close(AutoCloseable obj)
    {
        try
        {
            obj.close();
        }
        catch (Exception e) { }
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22596330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档