JDK或公共库中是否有任何辅助方法可以执行此操作:
if (resource instanceof AutoCloseable) {
((AutoCloseable) resource).close();
}
如果适用,只需调用对象的close()
。
我知道尝试资源,这不适用于这种情况。我知道并非所有使用close()
方法的类都实现AutoCloseable
。但是,我似乎一遍又一遍地写上述内容。
答案 0 :(得分:0)
Apache Commons提供了一些东西:
答案 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) { }
}
}