【发布时间】:2014-05-01 00:54:51
【问题描述】:
JDK 或通用库中是否有任何辅助方法可以做到这一点:
if (resource instanceof AutoCloseable) {
((AutoCloseable) resource).close();
}
如果适用,只需一条线即可调用对象的close()。
我知道 try-with-resources,它不适用于这种情况。而且我知道并非所有具有close() 方法的类都实现AutoCloseable。但是,我似乎一遍又一遍地写上面的内容..
【问题讨论】:
-
这看起来像是 XY 问题。您能详细介绍一下上下文吗?你不应该使用
instanceof。 -
fge: 是的,需要澄清一下:我有一个接口的引用,在编译时我不知道 impl 除了接口之外是否还实现了 AutoCloseable。
-
嗯,是的,你可以:
public <T extends YourInterface & AutoCloseable> void doSomethingWith(T victim) -
这将限制为 AutoCloseable impls;我正在寻找“..调用对象的 close() 如果适用”。
-
这看起来根本不对。这种方法存在根本性的问题,您应该更多地解释您的问题。
标签: java autocloseable