有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果实现了自动关闭,java Helper将调用close()?

JDK或公共库中是否有任何帮助器方法可以做到这一点:

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

如果适用,只需一行程序调用对象的close()

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


共 (3) 个答案

  1. # 1 楼答案

    以下是适用于自动关闭的apache commons closeQuietly

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

    既然谷歌派我来这里是为了那个案子:)

  2. # 2 楼答案

    编辑

    检查一下:

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