在Java中实现AutoCloseable
重要吗?
如果我创建一个实现AutoCloseable
的类扩展了另一个不实现它的类,这是否有意义?
例如
public class IGetClosed extends ICannotBeClosed implements AutoCloseable {...}
最佳答案
在Java中实现autoCloseable重要吗?
很难说实现该接口是否重要。但这不是必需的。
如果我创建一个实现AutoCloseable的类是否有意义
扩展了另一个没有实现的类?
可以这样做。没有什么不对。
AutoCloseable是Java 7的新增功能。它旨在与新的try-with-resources语句一起使用(Java 7+)
请参见下面两个提供相同功能的类。一个不使用AutoCloseable,另一个不使用AutoClosable:
// Not use AutoClosable
public class CloseableImpl {
public void doSomething() throws Exception { // ... }
public void close() throws Exception { // ...}
public static void main(String[] args) {
CloseableImpl impl = new CloseableImpl();
try {
impl.doSomething();
} catch (Exception e) {
// ex from doSomething
} finally {
try { // impl.close() must be called explicitly
impl.close();
} catch (Exception e) {
}
}
}
}
// Use AutoCloseable
public class AutoCloseableImpl implements AutoCloseable {
public void doSomething() throws Exception { // ... }
public void close() throws Exception { // ...}
public static void main(String[] args) {
// impl.close() will be called implicitly
try (AutoCloseableImpl impl = new AutoCloseableImpl()) {
impl.doSomething();
} catch (Exception e) {
// ex from doSomething
}
}
}
如你所见。使用AutoClosble将使代码更短,更清晰。