如果实现AutoCloseable,Helper调用close()?

时间:2014-03-23 20:00:22

标签: java autocloseable

JDK或公共库中是否有任何辅助方法可以执行此操作:

if (resource instanceof AutoCloseable) {
    ((AutoCloseable) resource).close();
}

如果适用,只需调用对象的close()

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

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

以下是适用于AutoCloseable的apache commons closeQuietly

  static void closeQuietly(AutoCloseable closeable) {
    try {
      if (closeable != null) {
        closeable.close();
      }
    }
    catch (Exception swallowed) {
    }
  }

因为谷歌发送给我这个案子:)

答案 2 :(得分:-1)

修改

检查一下:

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) { }
    }
}