java.lang.AutoCloseable
Posted 流星<。)#)))≦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.AutoCloseable相关的知识,希望对你有一定的参考价值。
java.lang.AutoCloseable
和java.io.Closeable
public interface AutoCloseable {
void close() throws Exception;
}
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
java.lang.AutoCloseable
是JDK7
添加的新接口- AutoCloseable接口对
try-with-resource
提供支持 java.io.Closeable
是JDK5
添加的接口。从JDK7开始,Closeable扩展了AutoCloseable。因此,在JDK7中,所有实现了Closeable接口的类也都实现了AutoCloseable接口。- AutoCloseable 是一个更高抽象层次的接口,不一定用在 IO 上,所以它里面的 close 方法抛出的异常是 Exception,而非 IOException。
- Closable 只用作 IO 流上,所以 close 方法抛出的异常是 IOException。
自定义AutoClosable 实现
public class TryWithResource implements AutoCloseable {
@Override
public void close() throws Exception {
StackTraceElement stack[] = Thread.currentThread().getStackTrace();
for (StackTraceElement ste : stack) {
System.out
.println("called by " + ste.getClassName() + "." + ste.getMethodName() + " / " + ste.getFileName());
}
}
public static void main(String[] args) {
try (TryWithResource twr = new TryWithResource()) {
System.out.println("use end...");
throw new Exception("xxx");
} catch (Exception e) {
System.out.println("close error...");
}
}
}
参考资料
以上是关于java.lang.AutoCloseable的主要内容,如果未能解决你的问题,请参考以下文章